new方法和init方法的区别
2017-07-02 14:37
399 查看
python类中的new方法和init方法的区别
1、定义一个cat类
class Cat(object): def __new__(cls, *args, **kwargs): print("this is new method") print(id(cls)) obj = object.__new__(cls) print(obj) return obj def __init__(self): print('this is init method') print(self) # 打印类的ID print(id(Cat)) # 创建一个persian_cat实例对象 persian_cat = Cat()
2、执行结果
4301236920 this is new method 4301236920 <__main__.Cat object at 0x10339e4e0> this is init method <__main__.Cat object at 0x10339e4e0>
3、说明
new方法至少要有一个参数cls,代表要实例化的类,此参数在实例化的时候有python解释器自动提供,而且new方法必须要将实例化的实例对象返回。init的第一个参数必须是self,这个self就是new方法返回的实例对象,init的作用就是为了初始化实例对象,而init方法不需要有返回值。
相关文章推荐
- Python中__new__与__init__方法的区别详解
- Python中__new__与__init__方法的区别详解
- Python中的__init__方法与__new__方法的区别
- python中的__new__方法与__init__方法区别与调用;通过使用__new__实现单例模式
- Python中__new__与__init__方法的区别详解
- python中__init__()方法和__new__()方法的区别
- servlet中init()和service()方法的区别
- getServletContext和getServletConfig都有getInitParameter的方法 区别
- 子类对父类中虚方法的处理有重写(override)和覆盖(new)的区别
- new和newInstance的区别方法
- 用Activator .CreateInstance代替new实现类的实例化Assembly.CreateInstance()与Activator.CreateInstance()方法的区别
- new 与 alloc/init的区别
- Java关键字new和newInstance方法的区别
- 静态工厂方法月用new调用的构造方法的区别
- C#中隐藏(new)和方法重写(override)和重载(overload)的区别
- Java关键字new和newInstance的区别方法
- C#中隐藏(new)和方法重写(override)和重载(overload)的区别
- java关键字new和newInstance方法区别
- Java newInstance()方法和new关键字区别
- python __init__和__new__之间的区别