好的。我一直在努力解決這個問題。 我有一個子類。我希望它創建它的基類的一個實例,如果它被調用時某些事情是真的。我會用__ new __做這個嗎?如果是的話,我會怎麼樣?如何創建與被調用的類不同的類?
這是我的意思的例子:
import warnings
class A:
def __init__(self, *args):
self.val = list(args)
def __str__(self):
return "A"
class B(A):
def __init__(self, *args):
if len(args)==3:
A.__init__(self, *args)
return
else:
warnings.warn("Making an A object!")
return A(*args)
def __str__(self):
return "B"
def extramethod1(self):
print "This method is only in a B object"
x = B(1, 2, 3)
Warning (from warnings module)
File '/test.py', line 14
UserWarning: Making an A object!
y = B(1, 2)
print x, y
'A B'
y.extramethod1()
'This method is only in a B object'
另外,我怎麼會具有B-問題,當它這樣做的警告?
B的構造函數在哪裏?你應該在那裏定義init邏輯。 –
可能重複的[應該類的構造函數返回一個子類?](http://stackoverflow.com/questions/12433584/should-a-class-constructor-return-a-subclass) – BrenBarn
您不是一個A對象!你讓兩次都是B對象。 – jimifiki