美文网首页
成员变量不在__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__中初始化

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

  • 第二章:保证稳定性和兼容性

    2.7 快速初始化成员变量 C++98:使用 ‘=’ 初始化类中成员变量,成员变量必须满足:① static ② ...

  • Python的「魔法方法」——(未完成)

    构造方法 构造方法的名字是__init__,它会在对象创建后立即被调用: 我们可以看到成员变量a自动被初始化: 重...

  • C++11:构造函数及类的初始化

    C++11:初始化 C++11中成员变量的初始化主要包括三类变量: 普通成员变量 常量 静态变量 静态常量 普通成...

  • 集锦3 iOS概念区分

    1.成员变量,局部变量,全局变量 成员变量存储在堆中创建对象就会分配存储空间成员变量不能定义的同时初始化成员变量定...

  • objc-zen-book

    懒加载 一般我们会在初始化方法中, 把成员变量都初始化出来, 但是有些成员变量比较耗资源, 如:NSDateFor...

  • 初识Java(部分笔记摘写)

    1. 局部和成员变量 成员变量在类中(有初始化值),局部变量在函数里(无初始化值)。前者当对象出现时、出现在堆内存...

  • 初始化

    成员方法的初始化 在类的内部,变量的定义顺序决定了初始化的顺序。创建一个对象时,会先初始化对象中的成员变量,然后才...

  • [转]Effective C++学习笔记:初始化列表中成员列出的

    类成员的默认初始化顺序是按照声明顺序进行, 如果使用初始化列表初始化成员变量, 则必须按照成员变量的声明顺序进行;...

  • __new__ VS __init__

    __init__函数并不是真正意义上的构造函数,__init__方法做的事情是在对象创建好之后初始化变量。真正创建...

网友评论

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

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