魔法方法

  • 魔法方法总是被双下划线包围,例如_init魔法方法是面向对象的
  • Python的一切,如果你不知道魔法方法,说明你还没能意识到面向对象的 Python的强大
  • 魔法方法的“魔力”体现在它们总能够在适当的时候被自动调用
init(self[, …])
有时候在类定义时有写__init__方法,有时候却没有,这是为什么呢?
因为需求,需要外部传入数据时用__init__
__init__ should return none
new(cls[, …])
子类重写适用于子类属于 父类的属性

class CapStr(str):
def new(cls, string):
string = string.upper()
return str.new(cls,string)

c1 = CapStr(‘ i love you’)
c1
‘ I LOVE YOU’

CapStr继承不可改变的类型str,所以不能使用init对自身进行修改,所以应该使用new进行一个替换,替换之后再来调用str.new。如果new没有重写的话,就会去调用父类的new

del(self)

当没有任何变量去引用这个对象的时候,垃圾回收机制会自动把它销毁,这个时候才会调用这个对象的del方法

致清 wechat
微信扫描二维码,和我一起探讨学习!