【问题标题】:Object instance in loop Python Classes [duplicate]循环Python类中的对象实例[重复]
【发布时间】:2019-12-17 23:45:25
【问题描述】:

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

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

【问题讨论】:

  • __init__ 中创建self.category,而不是使用类属性(全类共享)

标签: python python-3.x list class


【解决方案1】:

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

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

...

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-27
    • 2014-06-28
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多