如何解决尽管在__init__中定义了Python类成员列表,但它们仍跨实例共享
class Thing:
def __init__(self,name,number):
self.name = name
self.number = number
class Collection:
def __init__(self,description,things_list = []):
self.description = description
self.things_list = things_list
def add_thing(self,thing):
self.things_list.append(thing)
x_col = Collection("Collection X")
y_col = Collection("Collection Y")
x_col.add_thing(Thing("a",0))
x_col.add_thing(Thing("b",1))
y_col.add_thing(Thing("c",2))
y_col.add_thing(Thing("d",3))
y_col.add_thing(Thing("e",4))
print(x_col.description)
print(len(x_col.things_list))
print(y_col.description)
print(len(y_col.things_list))
运行脚本时,我得到:
Collection X
5
Collection Y
5
而不是预期的
Collection X
2
Collection Y
3
我进行了一些搜索以查看是否有人遇到此问题,但是我发现的所有其他问题都涉及到不使用__init__构造函数的人。即使我一直等到完成添加到x_col的Things_list中后,这种行为仍然存在:
x_col = Collection("Collection X")
x_col.add_thing(Thing("a",1))
y_col = Collection("Collection Y")
y_col最终只是使用x_col列表中的两件事创建的。
Windows 10 2004上的Python 3.8.5 64位。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。