• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > 轻松掌握python设计模式之访问者模式

轻松掌握python设计模式之访问者模式

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了访问者模式,java访问者模式,c#访问者模式,访问者模式应用,访问者设计模式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例为大家分享了python访问者模式代码,供大家参考,具体内容如下

"""访问者模式"""
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__时,定义解析顺序的是子类的__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)
</div>

运行结果如图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

</div>

您可能想查找下面的文章:

  • 轻松掌握python设计模式之访问者模式

相关文章

  • 研究Python的ORM框架中的SQLAlchemy库的映射关系
  • 浅谈Python的文件类型
  • 详解详解Python中writelines()方法的使用
  • 详解Python中的Descriptor描述符类
  • python基于xmlrpc实现二进制文件传输的方法
  • Python中random模块生成随机数详解
  • 一波神奇的Python语句、函数与方法的使用技巧总结
  • Python线程指南详细介绍
  • Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
  • Python爬取qq music中的音乐url及批量下载

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Python+django实现简单的文件上传
    • Python实现各种排序算法的代码示例总结
    • Python装饰器基础详解
    • python编程实现希尔排序
    • Python使用scrapy抓取网站sitemap信息的方法
    • python遍历目录的方法小结
    • py中的目录与文件判别代码
    • python统计文本文件内单词数量的方法
    • 整理Python 常用string函数(收藏)
    • 详细解读Python中解析XML数据的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有