成员变量不在__init__中初始化

2018-12-15  本文已影响41人  ThomasYoungK

我们写代码的时候,遇到一些新的属性,一般会在__init__中初始化,比如下面这段代码的num. 有没有办法在使用的时候直接初始化呢?

class Demo:
    def __init__(self):
        self.num = 0

    def add_one(self):
        self.num += 1


d1 = Demo()
d1.add_one()
d1.add_one()
print(d1.num)  # 2

可以将num定义为类变量,初始值为0,在add_one时再真正构造出实例属性,如下面的做法. 这里add_one第一次调用时使用类属性num的值0,之后就会遮盖住类属性。

class Demo2:
    num = 0

    def add_one(self):
        self.num += 1


d2 = Demo()
d2.add_one()
d2.add_one()
print(d2.num)  # 2
print(Demo2.num)  # 0
上一篇 下一篇

猜你喜欢

热点阅读