返回给出错误元组对象的元组是不可调用的

时间:2014-12-17 19:37:46

标签: python class properties

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

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

2 个答案:

答案 0 :(得分:2)

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

def execute(self):
    print self.get_features

属性和属性之间的唯一区别是属性具有getter和setter函数,当您访问或设置它们的值时,这些函数将被隐式调用 。有关详细信息,请参阅documentation for property

此外,您的课程应该继承自object

class Foo(object):

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

答案 1 :(得分:1)

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

这意味着execute()只需要打印属性,而不是将其称为函数