1
我對類繼承不是很有經驗。請幫我看看下面的代碼:Python類繼承中缺少方法?
class Handle(STAFHandle):
def __init__(self, HandleName):
handle = STAFHandle.__init__(self, HandleName)
self.initLogger(handle)
def initLogger(self, handle):
self.logger = Logging(handle, 'Test')
handle = Handle('test')
handle.logger.info('test')
它說,提交方法沒有定義:
result = handle.submit(system, service, logRequest) AttributeError: 'NoneType' object has no attribute 'submit'
,但如果我將其更改爲:
class Handle(STAFHandle):
def __init__(self, HandleName):
handle = STAFHandle.__init__(self, HandleName)
def initLogger(self, handle):
self.logger = Logging(handle, 'Test')
handle = Handle('test')
handle.initLogger(handle)
handle.logger.info('test')
它的工作原理。爲什麼有差異?非常感謝!!
乾杯, 哲
感謝您的建議!其實我先試過這種方式,但後來得到了一個不同的錯誤: TypeError:super()參數1必須是type,而不是classobj – 2011-01-03 09:20:04
@Zhe:你的基類是「舊式」;它不是從'object'派生的。在新的類型層次結構中,所有類都應該這樣做。一旦你改變它,一切都應該工作。 – katrielalex 2011-01-03 23:45:54