1

前几天我正在编码时突然发现自己在一个简单的问题上苦苦挣扎,但解决方案却令人困惑(至少以pythonic的方式)。

该代码应该只下载一些文件,为此,它会调用一些DownloadController将它传递给接收到的事件,callback例如init,和.progresserrorsuccess

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

  • 更改DownloadController为具有默认值callback=None并检查它以便在这种情况下忽略发送事件
  • NullCallbackImpl哪个遵守回调接口但什么都不做(仅pass在每个事件上)

第一种方法不喜欢它,因为代码会有点乱而且设计得不好。

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

  • 拥有一个 会有多好(也许“有多糟糕”)null_callback = mock.Mock()?(使用 Michael Foord 的 python 模拟库)
    • 有没有这样做的图书馆?
  • 或者我应该坚持用NullCallbackImpl一个简单的方法来实现每个方法pass
4

1 回答 1

1

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

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

于 2013-07-05T00:34:13.830 回答