Python(OOP)列表附加错误

Python(OOP)列表附加错误,python,class,oop,Python,Class,Oop,需要一点洞察力。我有以下python代码: >>> class invader: ... def __init__(self): // list ... self.parameters = [] ... ... def parameters(self): ... param = self.parameters ... param.append('3') ...

需要一点洞察力。我有以下python代码:

>>> class invader:
...     def __init__(self):
                // list
...             self.parameters = []
...
...     def parameters(self):
...             param = self.parameters
...             param.append('3')
... 
>>> invade = invader()
>>> invade.parameters()
在终端中运行此命令会产生以下错误消息:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“列表”对象不可调用
如何解决这个问题?

在最后一行:

invade.parameters()
您有效地使用了列表
参数
。(注意末尾的
()

做一个


将允许您查看列表的内容并删除运行时错误

您的问题是对属性和方法使用相同的名称,将
self.parameters
重命名为
self.param
并在方法中使用
self.param

class invader:
   def __init__(self):
     self.param = []

   def parameters(self):
      self.param.append('3')

invade = invader()
invade.parameters()
print(invade.param)

您的方法和属性都包含相同的名称
参数
,因此您可以在此处执行以下操作:

def parameters(self):
    self._parameters.append('3')

通常使用下划线封装属性,尤其是使用同名方法。

您的方法和属性包含同名的
参数。因为数据属性将覆盖具有相同名称的方法属性。因此,
invain.parameters
是列表,而不是函数。您应该重命名您的函数,例如
append\u parameters


如果要调用
parameters
函数,可以尝试以下方法:
invainer.parameters(invaine)
。但不建议使用
parameters
作为成员和属性名称。
def parameters(self):
    self._parameters.append('3')