假设我有课程C
。
我可以编写o = C()
来创建C
的实例并将其分配给o
。
但是,如果我想将类本身分配给变量然后实例化它呢?
例如,假设我有两个类,例如C1
和C2
,我想做类似的事情:
if (something):
classToUse = C1
else:
classToUse = C2
o = classToUse.instantiate()
实际instantiate()
的语法是什么?是否可以拨打__new__()
?
答案 0 :(得分:15)
o = C2()
这将完成你想要的。或者,如果您打算使用classToUse,只需使用:
o = classToUse()
希望这有帮助。
答案 1 :(得分:12)
你快到了。而不是调用instantiate()方法,只需直接调用变量。它被分配给类,类可以调用:
if (something):
classToUse = C1
else:
classToUse = C2
o = classToUse()
答案 2 :(得分:2)
很简单,Python无法识别变量是类或函数的位置。它只是称之为价值。
class A:
pass
B=A
b=B()
答案 3 :(得分:0)
类是一个对象,就像一个实例,一个函数,一个字符串......一个类也是一个实例。因此,您可以将其存储在变量中(或者您可以存储其他任何内容的变量),并且无论它来自何处,都可以使用()调用它。
def f(): print "foo"
class C: pass
x = f
x() # prints foo
x = C
instance = x() # instanciates C