我已经重写了python类方法,如下所示:
def __dir__(self):
# return super().__dir__().append('extra') #failed
# return (super().__dir__()).append('extra') #failed
#failed
# rtn = super();
# return rtn.__dir__().append('extra')
#works
rtn = super().__dir__()
rtn.append('extra')
return rtn
并得到此错误:
TypeError:“ NoneType”对象不可迭代
我不介意再写几行代码,但是我只是好奇为什么oneliner无法正常工作?
答案 0 :(得分:4)
return super().__dir__().append('extra')
失败,因为append
不返回列表,它在修改获取的列表后返回None
。
rtn = super();
return rtn.__dir__().append('extra')
失败,因为您有效地分裂了指向super()
的位置,然后调用了该方法,但是仍然存在与上一个示例相同的问题。
您的最后一个示例有效,因为您实际上捕获了列表,然后在修改后将其返回。