|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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__()方法,我被调用了...
复制代码 |
评分
-
查看全部评分
|