1、__init__()
>>> 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.getArea()
12
>>> rect.getPeri()
14
>>>
2、__new__()
创建类的实例化对象时,第一个调用的魔法方法为__new__() 一般情况下不需要重写
>>> class Capstr(str):
def __new__(cls, string):
string = string.upper()
return str.__new__(cls, string)
>>> a = Capstr('i love u')
>>> a
'I LOVE U'
>>>
当某个类继承于某个不可变类(如str类)时,需要对该类的实例化对象改变,则需要重写__new__()方法
>>> class Capstr(str):
def __new__(cls, string):
string = string.upper()
return str.__new__(cls, string)
>>> a = Capstr('i love u')
>>> a
'I LOVE U'
>>>
3、__del__(self) 析构(垃圾回收机制)
>>> class C:
def __init__(self):
print('__init__方法')
def __del__(self):
print('__del__方法')
>>> c = C()
__init__方法
>>> c2 = c
>>> c3 = c2
>>> del c3
>>> del c2
>>> del c
__del__方法
>>>
当某个对象、内存、变量没有指向他的标签时,类将自动调用__del__()方法进行垃圾回收