马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
|