Python中的操作符過載

2021-09-07 04:59:21 字數 2433 閱讀 9637

運算子過載是指在方法中攔截內建的操作----

當類的例項出現在內建操作中,python會自動呼叫自定義的辦法,並且返回自定義方法的操作結果。

類可以過載python的操作符

操作符過載使我們的物件與內建的一樣。__x__的名字的方法是特殊的掛鉤(hook),python通過這

種特殊的命名來攔截操作符,以實現過載。 python在計算操作符時會自動呼叫這樣的方法,例如:

如果物件繼承了__add__方法,當它出現在+表示式中時會呼叫這個方法。通過過載,使用者定義的對

象就像內建的一樣。

在類中過載操作符

1、操作符過載使得類能攔截標準的python操作。

2、類可以過載所有的python的表示式操作符。

3、類可以過載物件操作:print,函式呼叫,限定等。

4、過載使得類的例項看起來更像內建的。 5、

過載是通過特殊命名的類方法來實現的。

方法名        過載的操作說明        呼叫表示式

__init__    建構函式        建立物件:class()

__del__        析構函式        釋放物件的時候

__add__        「+」            x + y

__or__        「|」            x | y

__repr__    列印,轉換        print x, `x`

__call__    函式呼叫        x()

__getattr__    屬性引用        x.undefined

__getitem__    索引            x[key],for迴圈,in測試

__setitem__    索引賦值        x[key] = value

__getslice__    分片            x[low:high]

__len__        長度            len(x)

__cmp__        比較            x == y ,x < y

__radd__    右邊的操作符"+"        非例項 + x

例子:__getitem__攔截了所有的索引操作

>>> class indexer:

def __getitem__(self,index):

return index ** 2

>>> x = indexer()

>>> for i in range(5):

print x[i]    #x[i]將呼叫__getitem__(x,i) 0

1 49 16

python中,我們在定義類的時候,可以通過實現一些函式來實現過載運算子。

例子如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

# -*- coding:utf-8 -*-

classtest(object):

def__init__(self, value):

self.value=value

def__add__(self, x):

returnself.value *x.value

a=test(3)

b=test(4)

printa+b

執行結果為:12   a+b等同於a.__add__(b)

上面我們過載了加法。其他類似。

python中的操作符過載示例

最近在做乙個許可權系統,期望的效果如下 許可權部分是乙個二級結構,contenttype.action 假定對外暴露的介面為 perms 變數,期望能通過 if perms.contentname 來判斷使用者是否擁有contentname中的任一action的許可權,通過 if perms.con...

Python中操作符過載用法分析

類可以過載python的操作符 操作符過載使我們的物件與內建的一樣。x 的名字的方法是特殊的掛鉤 hook python通過這種特殊的命名來攔截操作符,以實現過載。python在計算操作符時會自動呼叫這樣的方法,例如 如果物件繼承了 add 方法,當它出現在 表示式中時會呼叫這個方法。通過過載,使用...

操作符過載

ifndef vertex h define vertex h class vertex vertex float px float py float pz vertex operator const vertex p vertex operator const vertex p void oper...