假设我有课C
。
我可以写o = C()
来创建一个实例C
并将其分配给o
.
但是,如果我想将类本身分配给一个变量然后实例化它呢?
例如,假设我有两个类,例如C1
and C2
,并且我想做类似的事情:
if (something):
classToUse = C1
else:
classToUse = C2
o = classToUse.instantiate()
实际的语法是instantiate()
什么?一个电话__new__()
就够了吗?
假设我有课C
。
我可以写o = C()
来创建一个实例C
并将其分配给o
.
但是,如果我想将类本身分配给一个变量然后实例化它呢?
例如,假设我有两个类,例如C1
and C2
,并且我想做类似的事情:
if (something):
classToUse = C1
else:
classToUse = C2
o = classToUse.instantiate()
实际的语法是instantiate()
什么?一个电话__new__()
就够了吗?
o = C2()
这将完成你想要的。或者,如果您打算使用 classToUse,只需使用:
o = classToUse()
希望这可以帮助。
您快到了。无需调用 instantiate() 方法,只需直接调用变量即可。它被分配给类,并且类是可调用的:
if (something):
classToUse = C1
else:
classToUse = C2
o = classToUse()
很简单,Python 无法识别变量在哪里是类或函数。它只是调用那个值。
class A:
pass
B=A
b=B()
一个类是一个对象,就像其他任何东西一样,比如一个实例、一个函数、一个字符串……一个类也是一个实例。所以你可以将它存储在一个变量中(或者任何你可以存储东西的地方),然后用 () 来调用它,不管它来自哪里。
def f(): print "foo"
class C: pass
x = f
x() # prints foo
x = C
instance = x() # instanciates C