Jon*_*han 5 python dependency-injection python-module
考虑一个模块,例如some_module,各个模块在同一解释程序中使用。该模块将具有单个上下文。为了使some_module方法起作用,它必须接收类实例的依赖项注入。
将依赖项注入模块的pythonic和优雅的方法是什么?
恕我直言,成熟的Dependency Injection所有术语更适合静态类型语言,如 Java,在 python 中你可以很容易地完成这一点,例如这里是一个简单的框架injection
class DefaultLogger(object):
def log(self, line):
print line
_features = {
'logger': DefaultLogger
}
def set_feature(name, feature):
_features[name] = feature
def get_feature(name):
return _features[name]()
class Whatever(object):
def dosomething(self):
feature = get_feature('logger')
for i in range(5):
feature.log("task %s"%i)
if __name__ == "__main__":
class MyLogger(object):
def log(sef, line):
print "Cool",line
set_feature('logger', MyLogger)
Whatever().dosomething()
Run Code Online (Sandbox Code Playgroud)
输出:
Cool task 0
Cool task 1
Cool task 2
Cool task 3
Cool task 4
Run Code Online (Sandbox Code Playgroud)
如果您认为缺少某些内容,我们可以轻松添加它,即 python。
| 归档时间: |
|
| 查看次数: |
2209 次 |
| 最近记录: |