我写了一个大致结构如下的库:
# file library/module/core.py
class MyClass:
backend = DesignatedBackend()
# file library/backends/backend_A.py
class DesignatedBackend:
who = "I'm backend A"
# file library/backends/backend_B.py
class DesignatedBackend:
who = "I'm backend B"
然后在IPython中,或者在运行脚本时,我希望能够编写:
>>> from library.module.core import MyClass
>>> import library.backends.backend_A # or something
>>> print(MyClass().backend.who)
I'm backend A
也就是说,我想通过发出适当的import语句来设置库的全局命名空间中有哪些类可用
因为核心文件不导入任何内容,所以无法解析
DesignatedBackEnd
是什么。即使您能够以某种方式将指定的后端注入到核心的命名空间中,也为时已晚,因为核心模块在您导入它之前无法存在,并且导入将失败您可以“设计”在core中有一个工厂方法,因此您可以导入core模块,注入命名空间,然后动态创建适当的类
但最好的方法是使用合成:
通过这种方式,您可以:
相关问题 更多 >
编程相关推荐