什么是魔术方法
相信大家在使用python的过程中经常会看到一些双下划线开头,双下划线结尾的方法,我们把它统称为魔术方法
魔术方法的特征
-
魔术方法都是双下划线开头,双下划线结尾的方法
-
魔术方法都是 python 内部事先定义的,是对象相关行为的底层实现方法
-
魔术方法都是在特定的情况下自动化触发的,一般不会直接去调用
1.__new__方法
创建一个对象的时候,调用的第一个方法是__new__方法,创建并返回一个实例对象(存在于父类object中),创建的实例对象让__init__函数初始化,一般单例模式会重写该方法
class MyClass:
def __new__(cls, *args, **kwargs):
print("这是一个new方法")
return super().__new__(cls, *args, **kwargs)
def __init__(self):
print("这是初始化方法")
my_class = MyClass()
#输出结果
#这是一个new方法
#这是初始化方法
2.__str__和__repr__方法
两个方法的作用都差不多,只不过str方法是展示给用户看的,repr通常被用于调试,两种方法如果重写的话必须要写return并且返回的是一个字符串对象