2013-01-08 18 views
7

y, Bar not Foo sınıfında olmalıdır.Kendi örneğinin Python çağrı yapıcısı

Bunun gibi bir şey var mı: self.constructor() kullanmak yerine? O type() kullanacağı değerdir, ancak API yöntemiyle her zaman tavsiye edilir olarak da self.__class__ kullanabilirsiniz

def create_another(self): 
    return type(self)() 

:

yeni tarzı sınıfları için

cevap

24

, 'geçerli' sınıf almak için type(self) kullanın.

def create_another(self): 
    return self.__class__() 
+2

@Billiska: Eğer self.__class__ kullanmak zorunda böylece

eski tarz sınıfları (değil object devralan piton 2) için

, type(), çok yararlı değildir bunu yapmak için iyi bir neden olmadıkça Yine de yeni stil sınıfları kullanırdım. Foo 'nesnesinden miras alsın. –