我们写代码的时候,遇到一些新的属性,一般会在__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
网友评论