Python中的過載方法

2021-08-05 21:06:54 字數 2265 閱讀 6708

在類中,對內建物件(例如:整數和列表)所能做的事,幾乎都有相應的特殊名稱的過載方法。最常見的就是過載類的建構函式(__init__函式)

方法重構

呼叫__init__

建構函式

物件建立:x = class(args)

__del__

析構函式

x物件收回

__add__

運算子+

如果沒有_iadd_, x + y, x += y

__or__

運算子|(位or)

如果沒有 _ior_, x | y, x |= y

__repr__, __str__

列印,轉換

print(x), repr(x), str(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], 沒__iter__時的for迴圈和其他迭代器

__setitem__

索引賦值語句

x[key] = value, x[i:j] = sequence

__delitem__

索引和分片刪除

del x[key], del x[i:j]

__len__

長度len(x), 如果沒有__bool__, 真值測試

__bool__

布林測試

bool(x), 真測試(在python2.6中叫做_

__lt__, __gt__

特定比較

x < y, x > y, x <= y, x >= y

__le__, __ge__

特定比較

x == y, x != y

__radd__

右側加法

other + x

__iadd__

實地(增強的)加法

x += y (or else add

__iter__, __next__

迭代環境

i = iter(x), next(i); for loops,

__contains__

成員關係測試

item in x(任何可迭代的物件)

__index__

整數值hex(x), bin(x), oct(x), o[x], o[x:]

__enter__, __exit__

環境管理器

with obj as var:

__get__, __set__

描述符屬性

x.attr, x.attr = value, del x.value

__delete__

描述符屬性

descr.__delete__(self, obj) –> none

__new__

建立在__init__之前建立物件

下面我們看乙個例子,重構列表中+運算子, 變成只列印: hello, python.

# 先看看原list加號運算子

>>> lst = list()

>>> lst

[1]>>> lst + [2]

>>> lst

[1, 2]

# 重構`+`號運算子方法__add__

class

a(list):

def__add__

(self, other):

print

'hello, python.'

>>> newlst = a()

>>> newlst + [2]

hello, python.

>>> newlst

[1]

我們在類a中過載了列表+號運算子的方法__add__,它只輸出hello, python.,所以當我們類a的例項物件newlst呼叫+號運算子時,並沒有像lst一樣,新增新的成員,而只是輸出字串(這就是重構運算子方法)。

Python 的方法過載

為防止兩個模組互相匯入的問題,python預設所有的模組都只匯入一次,如果需要重新匯入模組,python2 7可以直接用reload python3可以用下 為防止兩個模組互相匯入的問題,python預設所有的模組都只匯入一次,如果需要重新匯入模組,python2.7可以直接用reload pyth...

JavaScript中的方法過載

對js有些了解的人都知道,在js中根本就不存在像c 中的那種方法過載,而有的只是方法的覆蓋,當你在js中敲入兩個或多個同名的方法的時候,不管方法 函式 的引數個數怎麼個不同,這個方法名只能屬於最後定義的那個函式。也就是說後乙個方法會把前面同名的方法給覆蓋掉。我們看一段下面的 在瀏覽器中檢視的結果是 ...

Web Service 中過載的實現方法

通過在方法中新增乙個messagename屬性,並將類的webservicebinding 屬性中conformsto 指定為wsiprofiles.none。具體寫法 請檢查下面每個標準化宣告是否存在衝突。請按建議修正衝突,或向 配置節新增設定,對整個 vroot 關閉 bp 1.1 一致性警告。...