__new__和__init__的区别
来源:互联网 发布:股票数据 matlab 编辑:程序博客网 时间:2024/06/05 23:08
这个__new__确实很少见到,先做了解吧.
class TestCls():
def __init__(self, name): print('init') print(self) print(type(self)) self.name = namedef __new__(cls, name): print('new') print(cls) print(type(cls)) return super().__new__(cls)
c = TestCls(“CooMark”)
new是一个静态方法,而init是一个实例方法.
new方法会返回一个创建的实例,而init什么都不返回.
只有在new返回一个cls的实例时后面的init才能被调用.
当创建一个新实例时调用new,初始化一个实例时用init.
ps: metaclass是创建类时起作用.所以我们可以分别使用metaclass,new和init来分别在类创建,实例创建和实例初始化的时候做一些小手脚.
参数
new的第一个占位参数是class对象
init的第一个占位参数是class的实例对象
其他的参数应一致
作用
new 用来创建实例,在返回的实例上执行init,如果不返回实例那么init将不会执行
init 用来初始化实例,设置属性什么的
阅读全文
0 0
- __new__和__init__的区别
- __new__和__init__的区别
- python __init__和__new__之间的区别
- python __init__和__new__之间的区别
- python中__new__和__init__的区别
- python __init__和__new__之间的区别
- Python中的__new__和__init__的区别
- python __new__和__init__的区别
- 【python】__new__和__init__的区别
- __init__与__new__的区别
- __init__与__new__的区别
- Python中__init__和__new__的区别详解
- python中__init__()方法和__new__()方法的区别
- python之__init__()和__new__()的区分
- Python---类的"__new__"和"__init__"方法
- __new__ 和 __init__
- python __new__ 和 __init__
- python __new__和__init__
- C语言入门——奇偶个数
- 算法精解_C语言 链表_单链表(应用:页帧管理)
- 1、继承 2、抽象类 3、综合案例---员工类系列定义
- 累乘法
- JAVA常见的几种排序算法
- __new__和__init__的区别
- HDU-2159 FATE(完全背包)
- Oracle:any、all值的比较
- CQYZ_Vijos_P3090 赛车游戏
- Linux系统/etc/init.d目录和/etc/rc.local脚本
- FOR循环语句
- 计算组合数C(n,m)(SDUT 2241)
- day12今日内容介绍 1、构造方法 2、this关键字 3、super关键字
- linux 关键目录详解