10

class があるとしCます。

o = C()のインスタンスを作成してCに割り当てるように記述できますo

しかし、クラス自体を変数に代入してからインスタンス化したい場合はどうすればよいでしょうか?

たとえば、 と などの 2 つのクラスがC1ありC2、次のようなことをしたいとします。

if (something):
   classToUse = C1
else:
   classToUse = C2

o = classToUse.instantiate()

実際の構文は何instantiate()ですか? への呼び出しは__new__()十分ですか?

4

4 に答える 4

18
o = C2()

これにより、目的が達成されます。または、classToUse を使用する場合は、次のように使用します。

o = classToUse()

お役に立てれば。

于 2009-07-27T18:01:23.503 に答える
12

あなたはほとんどそこにいます。instantiate() メソッドを呼び出す代わりに、変数を直接呼び出します。クラスに割り当てられ、クラスは呼び出し可能です。

if (something):
    classToUse = C1
else:
    classToUse = C2

o = classToUse()
于 2009-07-27T18:06:31.793 に答える
2

簡単です。Python は、変数がクラスまたは関数である場所を認識しません。その値を呼び出すだけです。

class A:
   pass
B=A
b=B()
于 2009-07-27T18:02:42.813 に答える
0

クラスは、インスタンス、関数、文字列など、他のものと同じようにオブジェクトです... クラスもインスタンスです。したがって、それを変数 (または何かを格納できる他の場所) に格納し、どこから来ても () で呼び出すことができます。

def f(): print "foo"

class C: pass

x = f
x() # prints foo

x = C
instance = x() # instanciates C
于 2009-07-28T01:11:32.007 に答える