Python(OOP)列表附加错误
需要一点洞察力。我有以下python代码: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') ...
>>> 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')