ИМХо мнение, полноценное 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()
вывод:
Cool task 0
Cool task 1
Cool task 2
Cool task 3
Cool task 4
Если вы считаете, что чего-то не хватает, мы можем легко это добавить, его питон.