new方法和init方法的区别

来源:互联网 发布:phpcms 模板使用php 编辑:程序博客网 时间:2024/05/18 20:10

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)# 打印类的IDprint(id(Cat))# 创建一个persian_cat实例对象persian_cat = Cat()

2、执行结果

4301236920this is new method4301236920<__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方法不需要有返回值。

原创粉丝点击