2016/12/19
我感觉magic method 是python的进阶主题之一
有时候遇到, 感觉自己能看懂, 但是实际上不清楚其执行流程
官网文档看了一遍, 感觉不过瘾, 是否有更好的资料呢?
目的是什么
1. 对magic method做深入了解
2. 起码自己能用上
产品版本: Python2.7.x
操作系统: Linux
magic method: 类似__getattr__
这一类的, python里面很多, 各有不同作用
what is python magic method?
python magic method advanced
我不建議一次性地了解所有 dunder names。
因為 Python 的 dunder names 用在無數的地方:語言層級的,函式庫層級的,通用的,特定模組/類別使用的,類別層級的,模組層級的。太繁多了!我建議你按類別去了解,見一個懂一類。例如運算子重載的,裝作 list / dict 添加行為的,descriptor,模組導入相關的,類別創建、管理和自身屬性,迭代和非同步迭代,上下文管理,等等。
主要看你手邊的程式碼和官方文檔,不懂的地方再 Google 一下,基本上就沒問題了。還有疑惑不解的地方,可以去翻翻源碼。 Python 的原始碼組織得很好的。
我覺得沒有必要去刻意的了解python的魔法方法,想要pyhon進階的話,可以讀讀python源碼,一些常見的模組等,在讀的過程中,肯定會經常見到對python魔法方法的使用,看看原始碼是如何使用的。思考作者為什麼這麼用,也許會更有心得。不懂的話再去搜尋引擎查查就行了。一家之言,僅供參考。
如果想要對Python的魔術方法先有個粗略的認識,可以看rafekettler的這篇英文版博客
對於這篇英文博客,我看了幾遍,也嘗試了自己用中文來再講一遍,寫在了我的博客上。就當做我的一個廣告吧,但我是真心覺得我再加工的還蠻不錯的.
當然,即使看了上面的文章,也只能讓你知道這些魔術方法能夠做什麼。實務上還是需要多看優秀的源碼,學習別人是怎麼巧妙運用的。就跟你的Python程式碼會越寫越來Pythonic一樣,魔術方法用著用就會覺得很自然。
Python 魔法方法指南