0

Python でまだインスタンス化されていないオブジェクトのクラスの関数をインスタンス化する方法があるかどうかは誰にもわかりませんか? 私はこのようなものが欲しいです:

class C():
    def __init__(self, var):
        self.var = var
    def f1(self):
        self.var += 1
    def f2(self):
        self.var += 2

cond = True
if cond : f = C.f1
else:     f = C.f2

for i in xrange(1e7):
    a = C(1)
    for j in xrange(1e3):
        a.f()

目標は、最初にnparraysの「最小」、「最大」、または「平均」として「f」を使用できるようにすることであり、使用する関数を各ループでチェックしません。

4

2 に答える 2

0

aとの型bnumpy.ndarray. をインポートndarrayしたので、単純ndarray.minaand を呼び出すことができますb:

f = ndarray.min
print f(a), f(b) 

ここで、ndarray.min(x)は と同等x.min()です。

numpy.ndarray.minへの呼び出しのタイプを明示的に知らずに取得する編集rand:

f = type(rand(int())).min

この型にはmin関数があることをまだ知っておく必要があることに注意してください。

于 2013-08-14T12:35:34.263 に答える
0

関数を「インスタンス化」することはありません。クラスのインスタンスとして、オブジェクトをインスタンス化します。

これで、クラスのメソッドを呼び出すだけで、クラスのクラス メソッドをklass呼び出すことができます: klass.method(foo).

rand.minが で呼び出すことができる関数である場合a、単純にrand.min(a)orを実行しf(a)ます。

于 2013-08-14T12:30:57.520 に答える