我对类继承不是很有经验。请帮我看看下面的代码:
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'
但如果我把它改成:
^{pr2}$它起作用了。为什么会有区别?谢谢!!在
干杯, 哲
STAFHandle.__init__
返回None
。你可能想要:请记住,
__init__
方法将对象作为其第一个参数,并修改该对象。因此,当您调用super(Handle, self).__init__(handleName)
时,您正在更改self
的属性,而不是返回一个新对象。两个例子的不同之处在于,对initLogger
的两个调用中的变量handle
引用了不同的东西。在请注意,我已经用一个
super
代理替换了显式的STAFHandle.__init__
调用;这在本例中是等效的,但是允许更大的灵活性,因为现在可以在不破坏__init__
的情况下更改类的继承。在我还将},以符合Python惯例(CamelCase指的是类)。在
HandleName
改为{相关问题 更多 >
编程相关推荐