如何解决将项目添加到对象列表
class bag:
items = []
def add_item(self,x):
self.items.append(x)
if __name__ == "__main__":
bag1 = bag()
bag2 = bag()
bag1.add_item("water")
print(bag2.items)
我正在尝试向bag1加水,但我不知道为什么“ bag1.add_item(” water“)”将影响bag2
解决方法
class bag:
def __init__(self):
self.items = []
def add_item(self,x):
self.items.append(x)
if __name__ == "__main__":
bag1 = bag()
bag2 = bag()
bag1.add_item("water")
print(bag2.items)
您要做的就是添加def __init__(self)
。
在类声明中声明变量使它们成为“类”成员,而不是实例成员。在__init__
方法中声明它们可以确保在该对象的每个新实例旁边创建一个新的成员实例。
请注意,items = []
已被声明为类变量,因此该类的所有实例将为items
共享相同的内存位置。对于每个拥有自己的items
列表的实例,您需要使用关键字self
,类似于:
class bag:
def __init__(self):
self.items = []
def add_item(self,x):
self.items.append(x)
if __name__ == "__main__":
bag1 = bag()
bag2 = bag()
bag1.add_item("water")
print(bag2.items)
有关其他详细信息,请参阅this文档。
,以下代码应解决该问题:
class bag:
def __init__(self):
self.items = []
def add_item(self,x):
self.items.append(x)
if __name__ == "__main__":
bag1 = bag()
bag2 = bag()
bag1.add_item("water")
print(bag2.items)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。