【问题标题】:TypeError: 'list' object is not callable when using a propertyTypeError:“列表”对象在使用属性时不可调用
【发布时间】:2017-08-06 15:24:47
【问题描述】:

希望这里还没有回答。

当我尝试打印时:

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

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

【问题讨论】:

    标签: python python-3.x properties typeerror


    【解决方案1】:

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

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

    除了解释之外,解决方法是简单地删除()以避免TypeError

    【讨论】:

    • 谢谢,我完全错过了!
    • 这很好@padrezulmiro,了解属性及其行为方式需要一点时间。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-01-05
      • 2012-06-14
      • 1970-01-01
      • 2011-08-09
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 2017-05-27
      • 1970-01-01
      相关资源
      最近更新 更多