国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

輕松掌握python設計模式之訪問者模式

2019-11-25 16:29:21
字體:
來源:轉載
供稿:網友

本文實例為大家分享了python訪問者模式代碼,供大家參考,具體內容如下

"""訪問者模式"""class Node(object):  passclass A(Node):  passclass B(Node):  passclass C(A, B):  passclass Visitor(object):  def visit(self, node, *args, **kwargs):    meth = None    """python支持多重繼承,在解析父類的__init__時,定義解析順序的是子類的__mro__屬性,內容為一個存儲要解析類順序的元組。"""    """觀察到,super的執行路徑和類的__mro__列舉的類順序吻合;而__mro__的順序可以看作是深搜的結果"""    for cls in node.__class__.__mro__:      """方法名"""      meth_name = 'visit_' + cls.__name__      """getattr()函數是Python自省的核心函數,具體使用大體如下:       獲取對象引用getattr,Getattr用于返回一個對象屬性,或者方法       如果Visitor對象中有屬性meth_name則獲得方法返回的值,否則賦值None      """      meth = getattr(self, meth_name, None)      if meth:        break    if not meth:      meth = self.generic_visit    return meth(node, *args, **kwargs)  def generic_visit(self, node, *args, **kwargs):    print('通常訪問: ' + node.__class__.__name__)  def visit_B(self, node, *args, **kwargs):    print('訪問_B ' + node.__class__.__name__)a = A()b = B()c = C()visitor = Visitor()visitor.visit(a)visitor.visit(b)visitor.visit(c)

運行結果如圖:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 家居| 沐川县| 泸西县| 石门县| 得荣县| 清水河县| 宣恩县| 赞皇县| 平和县| 贺兰县| 濮阳县| 恩平市| 靖安县| 遵义县| 萝北县| 长汀县| 福清市| 菏泽市| 拜泉县| 黄骅市| 宁都县| 宁安市| 辰溪县| 平武县| 全椒县| 竹溪县| 慈溪市| 佛坪县| 马公市| 交口县| 建德市| 鄄城县| 徐汇区| 尼勒克县| 林州市| 龙海市| 酒泉市| 景德镇市| 社旗县| 唐河县| 嵊州市|