STAFHandle.__init__
возвращает None
. Вы, вероятно, хотите:
class Handle(STAFHandle):
def __init__(self, handle_name):
super(Handle, self).__init__(handle_name)
self.initLogger()
def initLogger(self):
self.logger = Logging(self, 'Test')
handle = Handle('test')
Помните, что __init__
методы принимают в качестве первого аргумента объект, а изменяют этот объект. Поэтому, когда вы вызываете super(Handle, self).__init__(handleName)
, вы изменяете свойства self
вместо того, чтобы возвращать новый объект. Разница между вашими двумя примерами заключается в том, что переменная handle
в двух вызовах initLogger
относится к разным вещам.
Обратите внимание, что я заменил явный вызов STAFHandle.__init__
на прокси super
; в данном случае это эквивалентно, но обеспечивает большую гибкость, поскольку теперь вы можете изменять наследование класса, не нарушая его __init__
.
Я также изменил HandleName
на handle_name
, чтобы соответствовать соглашениям Python (CamelCase относится к классам).