我想知道是否将模块对象传递给需要它的类或对象而不是使用import
可能不是一个坏主意,因为它避免了对这些模块的硬依赖。
我想知道是否有人比我更了解 Python Zen 可以解释为什么这是一个可怕/不可怕的想法?
你所说的这个叫做依赖注入 http://en.wikipedia.org/wiki/Dependency_injection并被认为是使代码可测试的良好实践。我认为 Python 没有任何东西会使其变得非Pythonic 或成为不好的实践。
在 Python 中还有其他方法可以做到这一点,例如根据传入的某种标志导入不同的模块:
class Foo(object):
def __init__(self, testing=False):
if testing:
import module_test as module
else:
import module
self.module = module
但是,传递对您希望使用的模块的引用更加灵活,可以更好地分离关注点,并且与传递对您希望使用的类或实例(或字符串或整数)的引用同样具有Python风格。
对于普通(非测试)用例,您可以使用默认参数值:
class Foo(object):
def __init__(self, module=None):
if not module:
import module
self.module = module
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)