首页 > 解决方案 > 循环 Python 类中的对象实例

问题描述

你好只是好奇为什么第二个实例已经获得了在第一个实例创建中添加的类别。我该如何解决?

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']
[]

标签: pythonpython-3.xlistclass

解决方案


要修复它,请在 中声明category__init__()例如:

class Game_record:
    def __init__(self,name):
        self.name = name
        self.category = []

...

您观察到这种行为的原因是,如果您category在类之后立即声明,它将成为类级别的属性,而不是对象级别的属性。


推荐阅读