運算子過載

2021-07-07 05:06:12 字數 2096 閱讀 9378

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

'''created on 2023年11月14日

@author: zroad

'''"""

一、運算子過載的概念:

1、類方法中攔截內建的操作

2、當類的例項處置內建操作,python自動呼叫該方法

""""""

二、內建操作符與類方法對應關係:

__init__ -> 建構函式,x = class(args)

__del__ -> 析構函式,x物件被**

__add__ -> 運算子+,無__iadd__,x+y,x+=y

__or__ -> 運算子|,x|y,x |= y

__str__ -> 轉換 , str(x)

__repr__ -> 列印 , print(x),repr(x)

__call__ -> 函式呼叫 ,x(*args,**kargs)

__getattr__ -> 點號運算, x.undefined

__setattr__ -> 屬性賦值語句,x.any = value

__delattr__ -> 屬性刪除 , del x.any

__getattribute__ ->屬性獲取, x.any

__getitem__ -> 索引運算 , x[key],x[i:j]

__setitem__ -> 索引賦值,x[key] = value x[i:j] = sequence

__delitem__ -> 索引和分片刪除 del x[key], del x[i:j]

__len__ -> 長度, len(x)

__bool__(__nonzero__ py2.6中), ->bool(x)

__lt__,__gl__ ->比較運算子, x < y, x > y

__le__,__ge__, ->比較運算子,x <= y,x >= y

__eq__.__ne__, ->比較運算子, x == y,x != y

__radd__, -> 右側加法, other + x

__iadd__, -> 加強加法,x += y

__contains__, ->成員關係測試, item in x

__index__, -> 整數值,hex(x),bin(x),oct(x)

__new__, -> 在__init__之前建立物件

""""""

三、運算子過載例項,索引、分片、自定義迭代器

"""#1、過載索引

class

indexer

(object):

def__getitem__

(self,index):

return index ** 2

x = indexer()

print ("x[5]=",x[5]) #x[5]= 25

#2、屬性引用

class

empty

(object):

def__getattr__

(self,attrname):

#訪問未定義屬性時執行該方法

if attrname == "age":

return

40else:

raise attributeerror,attrname

e = empty()

print

"e.age = ",e.age

#print "e.name = ",e.name

class

accesscontrol

(object):

def__setattr__

(self,attrname,value):

if attrname == "age":

self.__dict__[attrname] == value

else:

raise attributeerror,attrname + "not allowed!"

a = accesscontrol()

a.age = 40

a.name = "zr"

運算子過載之過載型別運算子

普通型別 類型別 呼叫對應的只有乙個引數 引數的型別就是這個普通型別 的建構函式 需求 boy boy1 10000 薪資 建構函式boy int boy boy2 rock 姓名 建構函式boy char 普通型別賦值給類型別其實很簡單,就是專門的對這個賦值的型別定義乙個建構函式。編譯器在執行 的...

運算子過載 賦值運算子的過載

有時候希望賦值運算子兩邊的型別可以不匹配,比如,把乙個int型別變數賦值給乙個complex物件,或把乙個 char 型別的字串賦值給乙個字串物件,此時就需要過載賦值運算子 注意 賦值運算子 只能過載為成員函式 賦值運算子過載例項示例 include include using namespace ...

運算子過載

c 中的運算子 1。大多數系統預定義運算子都能過載 不值得過載 不能被過載 2過載不能改變優先順序 不能改變結合性 不能改變運算子所需運算元的個數 過載後,可按這些運算子的表達方式使用 運算子過載的語法 一 通過運算子過載函式進行過載 1。運算子過載函式是成員函式 語法形式 type x opera...