運算子過載
在python語言中提供了類似於c++的運算子重在功能:
一下為python運算子重在呼叫的方法如下:
method overloads call for
__init__ 建構函式 x=class()
__del__ 析構函式 物件銷毀
__add__ + x+y,x+=y
__or__ | x|y,x|=y
__repr__ 列印轉換 print x,repr(x)
__str__ 列印轉換 print x,str(x)
__call__ 呼叫函式 x()
__getattr_ 限制 x.undefine
__setattr__ 取值 x.any=value
__getitem__ 索引 x[key],
for if
__len__ 長度 len(x)
__cmp__ 比較 x==y,xclass indexer:
def__getitem__
(self, index)
: #iter override
return index *
* 2x = indexer(
)x[2]
for i in range(5)
:print x[i]
減法過載
class number:
def__init__
(self, start)
:self.data = start
def__sub__
(self, other)
: #minus method
return number(self.data
- other)
number = number(20)
y = number – 10 # invoke __sub__ method
索引過載
class stepper:
def__getitem__
(self, i)
:return self.data[i]
x = stepper(
)x.data =
'spam'
x[1] #call __getitem__
for item in x: #call
__getitem__
print item
getattr/setattr過載
class empty:
def__getattr__
(self,attrname)
:if attrname =
='age'
:return 40
else
:raise
attributeerror
,attrname
x = empty(
)print x.age #call__getattr__
class accesscontrol:
def__setattr__
(self, attr, value)
:if attr =
='age'
:# self.attrname = value
self.
__dict__
[attr]
= value
else
:print attr
raise
attributeerror
, attr
+'not allowed'
x = accesscontrol(
)x.age = 40 #call
__setattr__
x.name =
'wang' #raise
exception
unicode過載
#coding:utf-8
class adder:
def __unicode__(self)
:return u'hello world'
print unicode(x) #hello world
Python 運算子過載
在 python 中is 是兩個運算子,對物件進行比較,分別對id,type value 進行比較。is 比較id type value三維 而 僅 比較value。實驗發現其實is,僅僅是比較一些簡單的基礎變數。class test object def init self self.value ...
Python運算子過載
print 呼叫父類建構函式 def parentmethod self print 呼叫父類方法 def setattr self,attr self.parentattr attr def getattr self print 父類屬性 self.parentattr def del self ...
python 運算子過載
運算子過載就是讓用類寫成的物件,可截獲並響應用在內建型別上的運算 加法,切片,列印和點號運算等 1.以雙下劃線命名的方法 x 的特殊鉤子,python運算子過載的實現是提供特殊命名的方法來攔截運算,python替每種運算和特殊命名的方法之間,定義了固定不變的對映關係 2.當例項出現在內建運算時,這類...