美文网首页
成员变量不在__init__中初始化

成员变量不在__init__中初始化

作者: ThomasYoungK | 来源:发表于2018-12-15 18:33 被阅读41次

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

    相关文章

      网友评论

          本文标题:成员变量不在__init__中初始化

          本文链接:https://www.haomeiwen.com/subject/mawahqtx.html