2009-07-27 97 views
4

假设我有C类。在Python中,从变量实例化类的正确方法是什么?

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

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

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

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

o = classToUse.instantiate() 

什么是对实际instantiate()语法?拨打__new__()够了吗?

回答

14
o = C2() 

这将完成你想要的。或者,如果您打算使用classToUse,只需使用:

o = classToUse() 

希望这会有所帮助。

+0

因此,向变量添加()的语义意味着“视为类和实例化?”。 – Uri 2009-07-27 18:03:11

1

很简单,Python不会识别varible是类还是函数。这只是称之为价值。

class A: 
    pass 
B=A 
b=B() 
10

你快到了。不要调用实例化()方法,而是直接调用变量。它分配给类和类可赎回:

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

o = classToUse() 
0

类是一个对象,就像其他任何东西,就像一个实例,一个功能,一个字符串...一类是实例了。所以你可以将它存储在一个变量(或者其他你可以存储的东西)中,并且用()调用它,不管它来自哪里。

def f(): print "foo" 

class C: pass 

x = f 
x() # prints foo 

x = C 
instance = x() # instanciates C 
相关问题