有什么办法可以让属性和方法具有相同的名称?
我的意思是可以同时调用和的常用属性?
像这样:
>>> 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/