向后兼容性:将模块移动到子包中
Backwards compatibility: Moving a module into a subpackage
假设我有一个具有这种结构的 Python 包:
project
+---> module1.py
+---> module2.py
+---> module3.py
现在,我决定将它们分组到子包中:
project
+---> topic1
+---> module1.py
+---> module2.py
+---> topic2
+---> module3.py
让我们进一步假设其他项目中有很多用户(我不想 update/email/break 在不知情的情况下使用他们的代码)使用以下内容:
from project.module1 import AwesomeClass
这不再适用于新设计。
我能做的是:
project
+---> module1.py
+---> topic1
+---> module1.py
+---> module2.py
+---> topic2
+---> module3.py
并且文件 project/module1.py
只包含一行
# For backwards compatability
from project.topic1.module1 import AwesomeClass
虽然这不是很漂亮,但有点与重构相反。
您是否可以在 __init__.py
中放入一些东西以使其正常工作,或者通过其他一些技巧将其 link 放到原来的位置而不那么显眼?
我觉得
# For backwards compatability
from project.topic1.module1 import AwesomeClass
是唯一明智的解决方案。
假设我有一个具有这种结构的 Python 包:
project
+---> module1.py
+---> module2.py
+---> module3.py
现在,我决定将它们分组到子包中:
project
+---> topic1
+---> module1.py
+---> module2.py
+---> topic2
+---> module3.py
让我们进一步假设其他项目中有很多用户(我不想 update/email/break 在不知情的情况下使用他们的代码)使用以下内容:
from project.module1 import AwesomeClass
这不再适用于新设计。
我能做的是:
project
+---> module1.py
+---> topic1
+---> module1.py
+---> module2.py
+---> topic2
+---> module3.py
并且文件 project/module1.py
只包含一行
# For backwards compatability
from project.topic1.module1 import AwesomeClass
虽然这不是很漂亮,但有点与重构相反。
您是否可以在 __init__.py
中放入一些东西以使其正常工作,或者通过其他一些技巧将其 link 放到原来的位置而不那么显眼?
我觉得
# For backwards compatability
from project.topic1.module1 import AwesomeClass
是唯一明智的解决方案。