在Python中,从变量实例化类的正确方法是什么?

时间:2009-07-27 17:58:59

标签: python instantiation

假设我有课程C

我可以编写o = C()来创建C的实例并将其分配给o

但是,如果我想将类本身分配给变量然后实例化它呢?

例如,假设我有两个类,例如C1C2,我想做类似的事情:

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

o = classToUse.instantiate()

实际instantiate()的语法是什么?是否可以拨打__new__()

4 个答案:

答案 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