【问题标题】:Returing tuple giving an error tuple object is not callable返回元组给出错误元组对象是不可调用的
【发布时间】:2014-12-17 19:37:46
【问题描述】:
class Foo:
    def __init__(self):
        pass

    @property
    def get_features(self):
        return (1,2,3,)

    def execute(self):
        print self.get_features()

f = Foo()
f.execute()

我明白了:

TypeError: 'tuple' object is not callable

我感兴趣的实际上是那个元组的长度。

【问题讨论】:

    标签: python class properties


    【解决方案1】:

    您不应该调用属性。相反,您可以像访问普通属性一样访问它们:

    def execute(self):
        print self.get_features
    

    属性和属性之间的唯一区别是属性具有 getter 和 setter 函数,当您访问或设置它们的值时,它们会被隐式调用。如需更多信息,请参阅documentation for property

    另外,你的类应该继承自object

    class Foo(object):
    

    您应该始终在 Python 2.x 中执行此操作,以便您的类成为 new-style class,它的功能远远超过旧样式。

    【讨论】:

      【解决方案2】:

      原因是你的 get_features() 函数上有 @property 装饰器,使它成为一个属性,因此它是不可调用的。

      这意味着 execute() 只需要打印属性,而不是作为函数调用它

      【讨论】:

        猜你喜欢
        • 2014-09-27
        • 1970-01-01
        • 2017-11-17
        • 2018-11-10
        • 1970-01-01
        • 2020-08-29
        • 2021-09-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多