Google Analytic

2015年9月22日 星期二

Python的__xxx__特殊函式用法

Python中定義類別或函數時,可以先讓本身進行某些動作,稱特殊命名空間
Special method names(對岸稱运算符重载),簡單案例如下:






__init__():定義物件建立後要執行的初始化過程,
__add__():常見的+操作
__sub__():常見的-操作
__mul__():常見的*操作



class Myclass:

               def __init__(self, value):

                             self.data= value

               def __add__(self,other):

                             return Myclass(self.data + other)

               def __mul__(self, other):

                             self.data = self.data * other

               def display(self):

                             print self.data







A = MYCLASS('ABC')
a.display()#'ABC'




B = A+'某某'
b.display()#'abcxyz“,注意__add__返回了新值




A *3
a.display()#'ABCABCABC“,注意__mul__原地實作







其他常用特殊方法(對岸稱运算符重载):

__truediv__():常見的/操作
__eq__():常見的=操作
__del__():析構方法,與__init__相對,在物件被回收前會被執行(因為回收物件的時間不一定,所以不建議用在要求立即性的情況)。
__getattr__():點號運算(獲取屬性),如:X.name
__setattr__():屬性賦值運算,如:X.name='WWJ“
__getitem__():索引運算,X [關鍵],沒有__item__時的的循環迭代器否則__item__()優先。
__setitem__():索引賦值運算,如X [關鍵]=價值
__iter__():迭代環境用於循環,測試,列表,映射
__cmp__():比較,如:X== Y,X> Y
__lt__():小於如:,X<Y
__eq__():等於
__radd__():左側加法,如“ABC”+ X(對象在右側)
__iadd__():實地(增強的)加法,如:X += Y

沒有留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...