2017-03-15 41 views
0

希望這個問題在這裏還沒有得到解答。TypeError:使用屬性時不能調用'list'對象

當我嘗試打印:

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 

我真的不明白我怎麼導致這個錯誤彈出,有人可以解釋我呢?

回答

3

屬性不需要被調用以便它們執行。簡單訪問它們(使用點號.)會觸發附加的功能。

總之,您是通過gp._z_matrix調用屬性_z_matrix然後,它已執行並返回一個列表(coords)定義,您使用了()調用列表對象後。

除了解釋,解決方案只是刪除(),以避免TypeError

+0

謝謝,我完全錯過了! – padrezulmiro

+0

這很好@padrezulmiro,它需要了解屬性以及它們的行爲。 –

0

您不需要傳遞括號即可訪問屬性。只要做print(gp._z_matrix)

相關問題