考虑一个模块,例如some_module,各种模块在同一个解释器进程中使用.该模块将具有单个上下文.为了使some_module方法起作用,它必须接收类实例的依赖注入.
将依赖注入模块的pythonic和优雅方法是什么?
解决方法:
IMHo意见完全成熟的依赖注入与所有术语更适合静态类型的语言,如Java,在python你可以非常容易地完成,例如这里是裸骨注射
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()
输出:
Cool task 0
Cool task 1
Cool task 2
Cool task 3
Cool task 4
如果您认为缺少某些东西,我们可以轻松添加它的python.
标签:python,dependency-injection,python-module
来源: https://codeday.me/bug/20190626/1295420.html