>>> # 魔法方法
>>>
>>> # 魔法方法总是被双下划线包围,例如 __init__
>>> # 魔法方法是面向对象的Python的一切
>>> # 魔法方法的“魔力”体现在它们总能够在适当的时候被自动调用
>>>
>>> # __init__(self[,...]) 相当于其它语言的构造方法,在类对象实例化时会被自动调用
>>> # __init__方法的返回值是None,绝对不能写return
>>> class Rectangle: def __init__(self,x,y): self.x = x self.y = y def getPeri(self): # 获取矩形的周长 return (self.x + self.y) * 2 def getArea(self): return self.x * self.y >>> rect = Rectangle(3,4) >>> rect.getPeri() 14 >>> rect.getArea() 12 >>>
>>> # __init__()方法并不是第一个被调用的方法,而是 __new__(Cls[,...])
>>>
>>> # __new__ 方法,我们平时极少去重写它
>>>
>>> # 有一种情况需要重写__new__方法,就是当继承一个不可变类时,又需要进行修改
>>>
>>> class CapStr(str): def __new__(cls,string): string=string.upper() return str.__new__(cls,string) >>> a = CapStr("I love you !") >>> a ‘I LOVE YOU !‘ >>>
>>> # 如果说__init__方法和__new__方法是构造器的话,那么__del__方法就是析构方法
>>> # 当对象要被销毁时 __del__(self)方法会被自动调用,它是当垃圾回收机制使用的
>>>
>>> # __del__方法,并不是说我们执行了 del obj就会被调用,而是所有对它的引用都被del之后,才会被调用
>>> class C: def __init__(self): print("我是__init__方法,我被调用了...") def __del__(self): print("我是__del__方法,我被调用了...") >>> c = C() 我是__init__方法,我被调用了... >>> c2 = c >>> del c >>> del c2 我是__del__方法,我被调用了...
时间: 2024-11-05 06:27:17