魔術方法(magic method)是特殊方法的暱稱,又稱為雙下方法(dunder method),比如__getitem__
collections.namedtuple()可以構建乙個簡單的類,如:card = collections.namedtuple('card', ['rank', 'suit'])
__getitem__
可以使物件可以使用索引
random.choice()
可以從乙個序列中隨機選出乙個元素
如何使用特殊方法:特殊方法的存在是為了被python直譯器呼叫的,我們通過內建的函式(例如len、str等)來使用特殊方法,這些內建函式不僅會呼叫特殊方法,而且對於內建的類來說,它們的速度更快
math.hypot(x,y)
用來求模,sqrt(x^2 + y^2)
__repr__
和__str__
的區別:後者是在str()或者print()函式被使用時被呼叫,前者則是在互動環境下輸入物件名也可以呼叫,兩者都是用來改變物件的輸出方式
bool(x)背後是呼叫x.__bool__()
的結果,如果不存在__bool__
方法,那麼bool(x)會嘗試呼叫x.__len__()
doctest兩種使用方式:
1.互動命令列執行 python -m doctest -v ***.py
2.使用doctest.testmod()
舉個栗子:
def
just
(x):
""" >>> just(5)
5>>> just(0)
0"""
if x:
return x
else:
return
0if __name__ == "__main__":
import doctest
doctest.testmod(verbose=true)
Fluent Python讀書筆記 二
特殊方法的存在是為了被python直譯器呼叫的,自己並不需要呼叫它。所以使用len object 而不是object.len 如果object是乙個自定義類的物件,python會自己呼叫其中由你實現的 len 方法,而如果是python內建的型別 list,str,bytearray等 cpytho...
Fluent Python讀書筆記 三
容器序列 list tuple和collections.deque這些序列可以存放不同型別的資料。存放的是它們所包含的任意型別的物件的引用。扁平序列 str bytes bytearray memoryview和array.array,這類序列只能容納一種型別。存放的是值而不是引用,扁平序列其實是一...
fluent Python 讀書筆記(二)
對書中1 2 示例中的筆記 1.我們自定義實現乙個類,如何實現這個類的加法,乘法,模等性質呢?以二維向量為例。from math import hypot class vector def init self,x 0,y 0 self.x x self.y y def repr self retur...