最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

輕松掌握python設(shè)計(jì)模式之訪問者模式

 更新時(shí)間:2016年11月18日 15:17:06   作者:天風(fēng)隼  
這篇文章主要幫助大家輕松掌握python設(shè)計(jì)模式之訪問者模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

"""訪問者模式"""
class Node(object):
  pass

class A(Node):
  pass

class B(Node):
  pass

class C(A, B):
  pass

class Visitor(object):
  def visit(self, node, *args, **kwargs):
    meth = None
    """python支持多重繼承,在解析父類的__init__時(shí),定義解析順序的是子類的__mro__屬性,內(nèi)容為一個(gè)存儲(chǔ)要解析類順序的元組。"""
    """觀察到,super的執(zhí)行路徑和類的__mro__列舉的類順序吻合;而__mro__的順序可以看作是深搜的結(jié)果"""
    for cls in node.__class__.__mro__:
      """方法名"""
      meth_name = 'visit_' + cls.__name__


      """getattr()函數(shù)是Python自省的核心函數(shù),具體使用大體如下:
       獲取對(duì)象引用getattr,Getattr用于返回一個(gè)對(duì)象屬性,或者方法

       如果Visitor對(duì)象中有屬性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)

運(yùn)行結(jié)果如圖:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 用Python 爬取貓眼電影數(shù)據(jù)分析《無名之輩》

    用Python 爬取貓眼電影數(shù)據(jù)分析《無名之輩》

    這篇文章主要介紹了用Python 爬取貓眼電影數(shù)據(jù)分析《無名之輩》,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 深入解析Python中的多進(jìn)程

    深入解析Python中的多進(jìn)程

    這篇文章主要介紹了深入解析Python中的多進(jìn)程,“Python中的多進(jìn)程是通過multiprocessing包來實(shí)現(xiàn)的,和多線程的threading.Thread差不多,它可以利用multiprocessing.Process對(duì)象來創(chuàng)建一個(gè)進(jìn)程對(duì)象
    2022-06-06
  • wxpython中自定義事件的實(shí)現(xiàn)與使用方法分析

    wxpython中自定義事件的實(shí)現(xiàn)與使用方法分析

    這篇文章主要介紹了wxpython中自定義事件的實(shí)現(xiàn)與使用方法,結(jié)合實(shí)例形式詳細(xì)分析了wxpython中自定義事件的創(chuàng)建步驟與使用方法,需要的朋友可以參考下
    2016-07-07
  • python topk()函數(shù)求最大和最小值實(shí)例

    python topk()函數(shù)求最大和最小值實(shí)例

    這篇文章主要介紹了python topk()函數(shù)求最大和最小值實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python將html轉(zhuǎn)成PDF的實(shí)現(xiàn)代碼(包含中文)

    python將html轉(zhuǎn)成PDF的實(shí)現(xiàn)代碼(包含中文)

    python將html轉(zhuǎn)成PDF的實(shí)現(xiàn)代碼,需要用到xhtml2pdf和微軟雅黑字體,需要的朋友可以參考下
    2013-03-03
  • Python如何操作docker redis過程解析

    Python如何操作docker redis過程解析

    這篇文章主要介紹了Python如何操作docker redis過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • python threading和multiprocessing模塊基本用法實(shí)例分析

    python threading和multiprocessing模塊基本用法實(shí)例分析

    這篇文章主要介紹了python threading和multiprocessing模塊基本用法,結(jié)合實(shí)例形式詳細(xì)分析了Python中threading和multiprocessing模塊基本概念、功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-07-07
  • linux安裝python修改默認(rèn)python版本方法

    linux安裝python修改默認(rèn)python版本方法

    在本文中我們給大家總結(jié)了關(guān)于linux安裝python修改默認(rèn)python版本的方法和相關(guān)知識(shí)點(diǎn),需要的讀者們參考下。
    2019-03-03
  • Python包,__init__.py功能與用法分析

    Python包,__init__.py功能與用法分析

    這篇文章主要介紹了Python包,__init__.py功能與用法,結(jié)合實(shí)例形式分析了Python中包的概念、功能及__init__.py初始化相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • Python中pygal繪制雷達(dá)圖代碼分享

    Python中pygal繪制雷達(dá)圖代碼分享

    這篇文章主要介紹了Python中pygal繪制雷達(dá)圖代碼分享,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12

最新評(píng)論

南城县| 霸州市| 保山市| 榆林市| 温宿县| 启东市| 四平市| 皋兰县| 安吉县| 台中市| 商洛市| 梧州市| 湘潭县| 布尔津县| 清徐县| 望都县| 皮山县| 理塘县| 兴安县| 桑日县| 大理市| 勐海县| 翼城县| 长子县| 长乐市| 徐水县| 太和县| 浮山县| 澄江县| 彰武县| 交城县| 东平县| 辽宁省| 华坪县| 朝阳区| 黑水县| 隆回县| 桂东县| 本溪市| 宁海县| 从江县|