TypeError:' list'使用属性时,对象不可调用

时间:2017-03-15 18:02:39

标签: python python-3.x properties typeerror

希望这里还没有得到答案。

当我尝试打印时:

import gparser

gp = gparser.I_Parser() 
print(gp._z_matrix())

它的解雇:

 Traceback (most recent call last):
  File ".\__init__.py", line 4, in <module>
    print(gp._z_matrix())
TypeError: 'list' object is not callable

gparser.py中,属性_z_matrix定义如下:

@property
def _z_matrix(self):
    coords = []
    p = re.compile('^ [a-zA-Z] +-?[0-9]')

    for line in self._file:
        m = p.match(line)

        if m:
            coords.append(line)

    return coords

我真的不明白我是如何导致此错误弹出的,有人可以解释一下吗?

2 个答案:

答案 0 :(得分:4)

不需要调用属性以便它们执行。只需访问它们(使用点.)就会触发附加的功能。

简而言之,您通过_z_matrix调用了属性gp._z_matrix,然后在执行并返回定义的列表(coords)之后,您就可以了使用()重新调用列表对象。

除了解释之外,解决方案只是删除()以避免TypeError

答案 1 :(得分:1)

您无需传递括号即可访问属性。只需print(gp._z_matrix)