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__

上一篇 下一篇

猜你喜欢

热点阅读