有什么办法可以让属性和方法具有相同的名称?
我的意思是可以同时调用的常用属性?
像这样:

>>> b = Book()
>>> b.pages
123
>>> b.pages()
123
>>> b.pages(including_toc=False)
123
>>> b.pages(including_toc=True)
127

最佳答案

不,你不能。
()总是从表达式的左侧调用对象。

这意味着b.pages()可以如下读取:

_tmp = b.pages
_tmp()

如您所见,方法是属性。

您可以(但不应该)做的是在某些自定义类中包装整数并提供__call__方法……但是我建议您不要使用这种黑魔法。

关于Python属性可调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13029254/

10-11 23:08
查看更多