马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
知识点:
魔法方法总是被双下划线包围,例如__init__()。
魔法方法是面向对象的Python的一切,如果你不知道魔法方法,说明你还没意识到面向对象的Python的强大。
魔法方法的“魔力”体现在他们总能够在适当的 时候被自动调用。
魔法方法:
1.__init__(self[, ...])
#构造方法。在实例化对象的时候被调用。
参数:self是实例对象。后面跟的是实例对象的参数。
返回值:None
例:
# 我们定义一个矩形类,需要长和宽两个参数,拥有计算周长和面积两个方法。
# 我们需要对象在初始化的时候拥有“长”和“宽“两个参数,因此我们需要重写__init__()方法
# 因为我们说过,__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()
>>> rect.getArea()
12
>>> rect.getPeri()
14
2.__new__(cls[, ...])
#在实例化对象时第一个被调用的方法。一般不会重写,但是当前类继承了一个不可变类型又必须修改的时候。
参数:cls表示这个类。后边的参数会原封不动的传给__init__()方法。
返回值:必须返回一个实例对象,通常是class这个类的实例对象。当然也可以返回别的类的实例对象。
例:>>> class CapStr(str):
def __new__(cls,string): #重写__new__()方法,设置一个string参数。
string = string.upper() #将string参数改变为全部大写,并重新赋值。
return str.__new__(cls,string) #返回父类的__new__()方法。
>>> a = CapStr("I love Fishc.Com")
3.__del__(self)
#析构(销毁)对象时自动调用的方法。注意:del x != x.__del__()。
参数:实例对象。
例:>>> class C:
def __init__(self):
print("我是__init__()方法,我被调用了...")
def __del__(self):
print("我是__del__()方法,我被调用了...")
>>> c1 = C()
我是__init__()方法,我被调用了...
>>> c2 = c1
>>> del c2
>>> del c1
我是__del__()方法,我被调用了...
>>> c1 = C()
我是__init__()方法,我被调用了...
>>> del c1
我是__del__()方法,我被调用了...
|