1、魔法方法总是被双下划线保卫,例如__init__
2、魔法方法是面向对象的python的一切,如果你不知道魔法方法,说明你还没能意识到面向对象的python的强大
3、魔法方法的‘魔力’体现在它们总能够在适当的时候被自动调用
一、__init__(self [,….]) 魔法方法,类实例化自动调用
>>> class Rectangle: #求矩形的面积周长
def __init__(self,x,y): #那么实例化的时候我们就需要他的长和宽
self.x = x #这里注意的是 __init__(self) 的返回值永远是Nona,不要试图去更改他
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
>>>
二、__new__(cls [,….]) 其实在__init__(self)之前调用
1、__new__(cls[,…])它跟其他的魔法方法不同第一个参数不是self.而是cls。也就是这个类
它在__init__之前被调用,如果它的cls后面有参数,它会原封不动的传给__init__的方法。
2、__new__方法需要一个实例对象作为返回值,通常cls这个类的实例对象。当然也可以返回其他类的实例对象。
<