2009-07-27 98 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 
相關問題