1. 什么是魔术方法:
双下划线开头和结尾的方法叫做魔术方法(特殊方法,魔法方法)
魔术方法不需要手动调用,都是在特定的情况下出发的
类实例化对象的过程:
1. 调用__new__,创建对象
2. 调用__init__,初始化对象
2. __new__方法重写之后,就没法自己创建对象了:即不会再调用__init__函数
def __new__(cls, *args, **kwargs):
print("这是new方法")
3. 如果还想创建对象,需要调用父类的__new__方法:
def __new__(cls, *args, **kwargs):
print("这是new方法")
obj = super().__new__(cls)
return obj
注意点:一般情况下不要定义new方法,如果定义了,一定要再new方法中返回对象
class MyClass(object):
def __init__(self):
print("----这是初始化方法 init-----")
def __new__(cls, *args, **kwargs):
print("这是new方法")
obj = super().__new__(cls)
return obj
m = MyClass()