python - 为什么这个 python 链函数调用失败?

标签 python

我重写了一个 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/

相关文章:

Python - 按用户名 chown 文件夹

python - 为什么 "import ctask as task"在 pyinvoke 中失败?

python - 从 gzip 文件写入未压缩文件的内存有效方法

Python for 循环启动计数器初始化

python - 从数据框中检索一定数量的行

python - MyPy 错误 : Expected type in class pattern; found "Any"

python - 仅将字典值写入文本文件

python - 如何在 tensorflow 中复制 numpy.choose() ?

python - 如何使用 PyQt 抓取桌面屏幕截图?

python - 将一个 Twisted 工厂接收到的数据发送到第二个工厂