前几天我正在编码,突然间我发现自己在解决一个简单的问题但却混淆了解决方案(至少以pythonic的方式去)。
代码应该只是下载一些文件,为此,它会调用一些DownloadController
传递callback
,以便接收init
,progress
等事件,error
和success
。
但是,我的代码在所有这些活动中并不需要。我想到了一些解决方案
DownloadController
更改为默认callback=None
并检查以便在此情况下忽略发送事件NullCallbackImpl
遵守回调界面但不执行任何操作(每个事件只需pass
)第一种方法并不喜欢它,因为代码会有点乱,而且设计不好。
所以,我坚持第二种方法......问题:
null_callback = mock.Mock()
会有多好(或许有多糟糕')? (使用来自Michael Foord的python模拟库)
NullCallbackImpl
创建实现每种方法的pass
吗?答案 0 :(得分:1)
您发现了DownloadController的一个新用例 - “让用户自定义回调”。听起来您可以控制Downloadcontroller源。它可以定义一个DownloadCallback类,它将事件公开为方法,但不对它们执行任何操作。 Controller将接受None(什么都不做)或任何实现DownloadController接口的东西。
我认为使用模拟实际代码有点奇怪......它创建了另一个需要为模块用户满足的依赖。