第六章教我們使用設計模式
我沒看太懂
簡單總結一下:
策略模式需要上下文,需要乙個大的策略,同時底下有好幾個單獨策略
命令模式完全沒看懂
語法糖(乾貨)
如何找出我們這一頁所定義的這麼多函式(策略)中的最佳策略?
通常我們又不太想每次新想乙個策略就改一次我們的表,於是我們可以這樣實現:
1.用列表推導找符合條件的函式
缺點:需要我們定義函式的名字時搞得特別一點
promos = [globals()[name] for name in globals if name.endswith("_promo") and name != 'best_promo']
2.用裝飾器
缺點:需要在新建的函式前加點@語句
registry =
def register(func):
return func
3.用inspect
缺點:需要單獨開闢乙個模組出來
import inspect
import promotions
promos = [func for name, func in inspect.getmembers(promotions, inspect.isfunction)]
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...