|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 哈哈哈哦 于 2017-7-29 12:07 编辑
魔法方法
1.魔法方法总是被双下划线包围
2.类实例化对象所调用的第一个魔法方法是:__new__;
它的第一个参数是这个实例化对象(cls);
返回的是一个实例化对象。
3.__init__(self)只有在需要初始化参数时才会明确定义,返回值是None,如
- # 我们定义一个矩形类,需要长和宽两个参数,拥有计算周长和面积两个方法。
- # 我们需要对象在初始化的时候拥有“长”和“宽”两个参数,因此我们需要重写__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.getPeri()
- 14
- >>> rect.getArea()
- 12
复制代码
4.__del__并不是相当与调用del,只用当垃圾回收机制回收对象的时候才调用,如
- >>> class B:
- def __del__(self):
- print('我在调用__del__')
-
- >>> b1 = B()
- >>> b2 = b1
- >>> b3 = b2
- >>> del b3
- >>> del b2
- >>> del b1
- 我在调用__del__
复制代码
5.反运算的魔法方法,如__radd__(self,other)。
在 a + b 中,如果a对象的__add__方法没有或无法进行相应的操作,则会调用 b 的__radd__方法
6.其他魔法方法参考
Python 魔法方法详解
http://bbs.fishc.com/thread-48793-1-1.html
(出处: 鱼C论坛)
7.类的静态属性与静态方法
静态属性:在类中直接定义的变量(没有self),引用类的静态属性使用“类名.属性名”的形式。
- class C:
- count = 0 # 静态属性
- def __init__(self):
- C.count = C.count + 1 # 类名.属性名的形式引用
- def getCount(self):
- return C.count
复制代码
静态方法:在普通方法的前边加上@staticmethod。
- class C:
- @staticmethod # 该修饰符表示 static() 是静态方法
- def static(arg1, arg2, arg3):
- print(arg1, arg2, arg3, arg1 + arg2 + arg3)
- def nostatic(self):
- print("I'm the f**king normal method!")
复制代码
静态方法并不需要self参数,因此即使是使用对象去访问,self参数也不会传进去
- >>>c1 = C()
- >>> c1.static(1, 2, 3)
- 1 2 3 6
- >>> C.static(1, 2, 3)
- 1 2 3 6
复制代码
|
评分
-
查看全部评分
|