python 中的代表

2024-05-20

我实现了这个简短的示例来尝试演示一个简单的委托模式。我的问题是。这看起来我已经理解了委托吗?

class Handler:
    def __init__(self, parent = None):
        self.parent = parent
    def Handle(self, event):
        handler = 'Handle_' +event
        if hasattr(self, handler):
            func = getattr(self, handler)
            func()
        elif self.parent:
            self.parent.Handle(event)

class Geo():
    def __init__(self, h):
        self.handler = h

    def Handle(self, event):
        func = getattr(self.handler, 'Handle')
        func(event)

class Steve():
    def __init__(self, h):
        self.handler = h

    def Handle(self, event):
        func = getattr(self.handler, 'Handle')
        func(event)

class Andy():
    def Handle(self, event):
        print 'Andy is handling %s' %(event)

if __name__ == '__main__':        
    a = Andy()
    s = Steve(a)
    g = Geo(s)
    g.Handle('lab on fire')

一个 Python 技巧:你不需要说:

func = getattr(self.handler, 'Handle')
func(event)

说啊:

self.handler.Handle(event)

我不确定您对 Handler 类做了什么,它在您的示例中没有使用。

在 Python 中,具有大写名称的方法非常非常不寻常,通常是移植某些具有此类名称的现有 API 的结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 中的代表 的相关文章

随机推荐

  • 在文本文件中搜索单词并返回其频率

    如何在包含单词文本的文本文件中搜索特定单词并返回其频率或出现次数 使用扫描仪 String text Question how to search for a particular word in a text file containin
  • 动态速度计 javascript 或 jquery 插件

    我希望有动态ajax插件在页面上显示速度计 一个想法是我设置一个背景并旋转针 有人知道相关插件吗 这里有一些供您参考 http bernii github com gauge js http bernii github com gauge
  • 4 级订阅嵌套在流星中

    我正在使用流星 这是我的架构 每个都是一个单独的集合 课程有很多讲座 讲座有很多问题 问题有很多答案 我想要一页可以显示给定课程的讲座 问题和答案 我可以毫无问题地显示课程的讲座 但在显示更多嵌套项目时遇到问题 我理想地希望拥有 讲座有 c
  • 更改 Sublime Text 2 中的“下一个文件”和“上一个文件”快捷方式

    我没有运气改变 Sublime 中切换文件的键绑定 有人知道这笔交易在这里吗 我想要实现的只是 cmd 和 cmd 显示下一个和上一个文件 然后我可以使用 tab 和 shift tab 进行所有缩进 keys super command
  • python future 和元组解包

    实现像使用 future 进行元组解包这样的事情的优雅 惯用的方法是什么 我有这样的代码 a b c f x y g a b z h y c 我想将其转换为使用期货 理想情况下我想写一些类似的东西 a b c ex submit f x y
  • 使用 msbuild 复制所有文件和文件夹

    只是想知道是否有人可以帮助我编写一些我正在尝试编写的 msbuild 脚本 我想要做的是使用 msbuild 将所有文件和子文件夹从一个文件夹复制到另一个文件夹 ProjectName gt Source gt Tools gt Viewe
  • 如何在 JSP 中导入类?

    我是一个完全的JSP初学者 我正在尝试使用java util List在 JSP 页面中 我需要做什么才能使用除以下类之外的类java lang 使用以下导入语句进行导入java util List 顺便说一句 要导入多个类 请使用以下格式
  • Objective C 如何将文本字段添加到导航栏中

    我正在尝试将文本字段添加到导航栏中 但它没有显示在模拟器中 我在 viewdidload 中按如下方式执行 UITextView textField UITextView alloc initWithFrame CGRectMake 0 0
  • 我怎样才能更多地了解Python的内部原理? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我使用Python编程已经有半年多了 我对Python内部更感兴趣 而不是使用Python开发应用程序
  • WordPress 包含 SVG 文件错误

    我使用 PHP 和 WordPress 在本地主机上 我可以毫无问题地包含 SVG 文件 但在实时服务器上 我尝试包含一个 SVG 文件以便能够使用 CSS 对其进行样式设置 我收到此错误消息 Parse error syntax erro
  • 如何在 C++ 上检查某个键是否被按下

    我怎样才能检查 Windows 上是否按下了某个键 正如其他人提到的 没有跨平台的方法可以做到这一点 但在 Windows 上你可以这样做 下面的代码检查 A 键是否按下 if GetKeyState A 0x8000 Check if h
  • 使用 Sequelize 实现单表继承

    有没有办法使用sequelize来创建单表继承 我希望有一个用于购买和 PartialPurchase 模型的 STI 其中我将有一个类型字段 该字段为 Purchase 或 PartialPurchase 以及类 Purchasing 和
  • 如何使用 Spring Boot 在运行时配置 Micrometer 的监控系统

    我对一般指标尤其是微米很陌生 所以这可能是一个愚蠢的问题 千分尺在其上描述了自己主页 https micrometer io 作为 外观 没有供应商锁定 想想 SLF4J 但为了指标 具有 对 Netflix Atlas 的内置支持 这do
  • 使用 CognitoIdentityServiceProvider 的 adminCreateUser 方法的 AWS Lambda 函数突然失败

    在过去的几天里 我一直在使用 AWS Lambda 函数测试特定流程 并且在 Cognito 用户池中预注册后触发的 lambda 函数工作正常并很好地返回回调函数 但从昨天开始我就看到了以下错误 ntime node modules aw
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • LINQ to Entities 是否支持“where”子句谓词中的 IEquatable?

    我有一个名为 EntityBase 的简单基本实体类型 它实现 IEquatable 我在 LINQ to Entities 之外使用了此代码 使用EF http en wikipedia org wiki ADO NET Entity F
  • 如何在序列化器创建方法中获取 URL Id?

    我有以下网址 url r member P
  • 改变字符串颜色

    好的 这是我上一个问题的延续 但我有代码 private void btnTrans Click object sender EventArgs e var abrvStr inputBx Text foreach var kvp in d
  • 用隐藏单元格补充 colspanned 表格有什么不好吗?

    我一直在表格上开发一些排序和选择功能 我发现在具有跨单元格的表格中定位非常困难 我只是添加了跨区单元格并将其隐藏 它看起来不错 它与我的 js 一起工作 非常适合索引 但我想知道这是否是合法的方法 stuffing display none
  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self