繁体   English   中英

如何在 object 创建时增加父 class 中的 static 计数器

[英]How to increment static counter in parent class on object creation

我正在尝试在父对象 class 中实现一个 static 计数器,但该计数器在所有对象中具有相同的值。

在下面的示例中,我希望每次创建 object 时都会递增id 相反,我为每个 object 获得了相同的id (在本例中为18 )。

为什么 static id属性没有按预期运行? 它在超类的构造函数之外声明。 我希望每个self.id中的 self.id 继承 static 增量值,因此它应该随着每个 object 的创建而改变。

我需要为每个对象编号。

class Cheese:
    id = 17
    def __init__(self):
        self.id += 1

class Cheddar(Cheese):
    def __init__(self, name):
        super().__init__()
        self.name_ = name

def main():
    cabot_clothbound = Cheddar("Cabot Clothbound")
    kerrygold = Cheddar("Kerrygold")
    tillamook = Cheddar("Tillamook")

    print(f"Cabot Clothbound: {cabot_clothbound.id}")
    print(f"Kerrygold: {kerrygold.id}")
    print(f"Tillamook: {tillamook.id}")

main()

预计 Output:

18
19
20

实际Output

18
18
18

尝试将您的代码更改为:

class Cheese:
    id = 17
    def __init__(self):
        Cheese.id += 1
        self.id = Cheese.id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM