gpt4 book ai didi

python - 在 Python 中使用空模式的推荐方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 18:54:57 24 4
gpt4 key购买 nike

有一天,我在编码时突然发现自己正在努力解决一个简单的问题,但解决方案却很困惑(至少以Pythonic的方式)。

代码应该只是下载一些文件,为此,它会调用一些 DownloadController 并向其传递 callback 以便接收诸如 init< 之类的事件进度错误成功

但是,我的代码不需要所有这些事件。想到这里我想到了一些解决方案

  • DownloadController 更改为默认 callback=None 并检查它,以便在这种情况下忽略发送事件
  • 拥有NullCallbackImpl,它遵循回调接口(interface),但不执行任何操作(只需在每个事件上传递)

第一种方法不喜欢它,因为代码会有点困惑并且设计不好。

所以,我坚持第二种方法......问题:

  • 如果有一个 null_callback = mock.Mock() 会有多好(也许是“多糟糕”)? (使用来自 Michael Foord 的 python 模拟库)
    • 是否有任何库可以执行此操作?
  • 或者我应该坚持创建一个 NullCallbackImpl 使用简单的 pass 实现每个方法?

最佳答案

您发现了 DownloadController 的一个新用例 - “让用户自定义回调”。听起来您可以控制 Downloadcontroller 源。它可以定义一个 DownloadCallback 类,将事件公开为方法,但对它们不执行任何操作。 Controller 将接受 None(不执行任何操作)或任何实现 DownloadController 接口(interface)的内容。

我认为对真实代码使用模拟有点奇怪......它创建了另一个需要满足模块用户的依赖关系。

关于python - 在 Python 中使用空模式的推荐方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17479480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com