2008年7月15日 星期二

Python class mthod

Python 原本沒有 class method,只有 instance method,這在一些情況下不方便,比方 factory method。後來 Python 的改版做了修正,詳細的說明見 static methods,以及後來的改良語法 decorators,兩篇文章的說明淺顯易懂,我就不在這轉述了。感謝 Aethanyc 介紹。

decorator 不只可改善 classmethod 語法,還可以協助當 function wrapper,用來做 log、檢查參數。官網的例子很讚,值得一看,這裡摘錄一段 singleton 的做法:

def singleton(cls): instances = {} def getinstance(): if cls not in instances: instances[cls] = cls() return instances[cls] return getinstance @singleton class MyClass: ...

有興趣的話可以對照 Ruby 版的 cache,Python 應該也能寫出類似的東西。我很喜歡這種由外包裝的寫法,寫起來很乾淨,完全不會影響到原 function 以及 call function 的 code。

沒有留言:

張貼留言