Python魔术方法
2020-09-24 本文已影响0人
Margolu
在python中,有一些内置好的特定方法,方法名是“__xxx__",在进行特定的操作时会自动被调用,这些方法称之为魔术方法。
__init__:初始化一个类,在创建实例对象为其赋值时使用
__str__:在将对象转换成字符串str(对象)测试的时候,打印对象的信息。
__new__:创建并返回一个实例对象,调用了一次就得到一个对象
__class__:获得已知对象的类(对象.__class__)
__del__:对象在程序运行结束后进行对象销毁的时候调用这个方法,来释放资源
__str__方法
直接打印对象时,输出结果只一串类似id地址的信息
重写__str__方法后,打印对象的结果
__init__方法为实例对象属性赋值
__new__创建对象实例的方法,每调一次就会生成一个新的对象。cls是class的缩写,后面两个参数代表我们为实例对象传入的参数,定义的两个属性。
当我们重写了__new__方法,方法体里面只是打印了一个字符串,并没有创建对象,所以对象不存在。系统就不会再自动调用__init__初始化方法。
当手动在__new__方法体里面调用系统的创建对象方法后,系统也就自动调用了__init__方法
应用场景:单例模式
__new__和__init__函数的区别
__new__类的实例化方法,必须要返回实例,否则对象创建不成功。至少有一个参数是cls,代表要实例化的类,此参数在实例化时有python提供
__init__用来做数据的初始化工作
__new__执行早于__init__