星期五, 10月 25, 2013

Python patterns - Visitor

開始來看 Python patterns,第一個看的是 Visitor。
  1. __mpro__ :這個內建的隱藏屬性可以列出父類別以及其上的所有類別,程式利用這個來取得繼承樹,並進行訪問。這部分的說明可以參考 What does "mro()" do in Python? - Stack Overflow
  2. 程式利用 getattr() 先去查看類別是否有實作 visit_xxx 方法,如果有就呼叫,如果沒有,才呼叫 generic_visit 的方法。
這跟 Visitor Pattern 似乎不太一樣,作者也在 Extrinsic Visitor Pattern in Python with support for Inheritance - Peter Hoffmann 裡說了,這是一個變形過的 Pattern。
如果要 Python visitor 的範例,可以參考 PythonWise: Visitor Design PatternThe Visitor Pattern in Python
補充:後來看了 ast module 以後,其實作者提的就跟 ast module 裡一模一樣。主要還是應用在 Tree 上。

沒有留言: