向后兼容性:将模块移动到子包中

时间:2015-11-13 14:49:05

标签: python packages python-import backwards-compatibility

假设我有一个具有这种结构的Python包:

project
 +---> module1.py
 +---> module2.py
 +---> module3.py

现在,我决定将这些分组到子包中:

project
 +---> topic1
   +---> module1.py
   +---> module2.py
 +---> topic2
   +---> module3.py

让我们进一步假设其他项目中有很多用户(我不想更新/发送电子邮件/破解他们的代码而不知道)使用以下内容:

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中使其正常工作,或者其他一些黑客将它链接到它的旧地方而不是那么明显?

1 个答案:

答案 0 :(得分:0)

我认为

Person(const Person& p) = default;

是唯一明智的解决方案。