我只是好奇为什么第二个实例已经获得了在第一个实例创建中添加的类别。我怎么才能修好它?
class Game_record:
category = []
def __init__(self,name):
self.name = name
def add_category(self, cat):
self.category.append(cat)
def reset_cat(self):
self.category = []
def ret_cat(self):
return self.category
game = ["a","b"]
for each in game:
g = Game_record( each )
g.add_category("kol")
g.add_category("bol")
print(g.ret_cat())
g.reset_cat()
print(g.ret_cat())
输出
['kol', 'bol']
[]
['kol', 'bol', 'kol', 'bol']
[]
问题来源StackOverflow 地址:/questions/59383692/object-instance-in-loop-python-classes
修正它在_init__()中声明类别,例如:
class Game_record:
def __init__(self,name):
self.name = name
self.category = []
...
您观察到这种行为的原因是,如果您在类之后立即声明category,它将成为类级别的属性,而不是对象级别的属性。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。