开发者社区> 问答> 正文

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

问题来源StackOverflow 地址:/questions/59383692/object-instance-in-loop-python-classes

展开
收起
kun坤 2019-12-27 10:10:21 377 0
1 条回答
写回答
取消 提交回答
  • 修正它在_init__()中声明类别,例如:

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

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

    2019-12-27 10:10:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载