我正在尝试创建一个输入列表的简单类,然后使用名为“add”的函数追加到列表中,该函数也在同一个类中定义。
我一直收到这个错误:'list'对象没有属性'a'
class try1:
def __init__(self, a=[]):
self.a = a
print(a)
return
def add(self, b=None):
self.a.append(b)
print(a)
return
if __name__ == "__main__":
c=try1(['a', 'b', 'c'])
d = ['d', 'e', 'f']
try1.add(d)
答案 0 :(得分:4)
你在这里遇到了一些不同的事情会导致这种奇怪的错误。
核心问题是,您尝试在类 add
上调用try1
,而不是刚刚创建的实例,变量c
。将try1.add(d)
更改为c.add(d)
会产生预期结果(如果您还删除print(a)
或将其更改为print(self.a)
,因为该范围内不存在a
)。
不相关的错误是因为您使b
成为关键字参数。当您尝试调用try1.add
时,第一个参数在方法内变为self
。然后你得到AttributeError
,因为self
是一个列表,显然没有名为a
的属性。
另外,你shouldn't use a mutable as a default argument。此外,您不需要空return
语句:任何没有return
语句的函数都会隐式返回None
。
答案 1 :(得分:0)
这里有一些事情。首先,修复缩进。 Python确实是关于空白的。假设您修复了缩进,您将遇到其他几个问题。在main
方法中,您希望调用c.add(d)
(我认为)。
您可能在第9行遇到错误,这是我认为您正在谈论的错误。在您的方法范围内,变量a
尚不存在。但self.a
确实如此。您可能打算打印self.a
。
作为旁注,Python中的类名应以大写字母开头。数字是允许的,但我真的试图避免它们。