Python運算子過載

2022-02-02 06:52:31 字數 2318 閱讀 4092

運算子過載

在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.當例項出現在內建運算時,這類...