我重写了一个 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' object is not iterable
我不介意多写几行代码,但我很好奇为什么 oneliner 不起作用?
最佳答案
return super().__dir__().append('extra')
失败,因为append
没有返回列表,它在修改它得到的列表后返回None
。
rtn = super();
return rtn.__dir__().append('extra')
失败是因为您有效地拆分指向 super()
然后调用该方法,但仍然存在与前面示例相同的问题。
最后一个示例有效,因为您实际上捕获了列表,然后在修改后将其返回。
关于python - 为什么这个 python 链函数调用失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54641707/