您的位置:首页 > 编程语言 > Python开发

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