在编写代码时,我经常遇到解决琐碎依赖问题的问题。例如,让我们采用我最近编写的memoizer对象的布局。我的目录结构如下所示:
memoizer/
memoizer.py
tests.py
strategies/
__init__.py
perfect.py
mru.py
queue.py
README
具体问题是mru.py. mru.py包含一个MRU类,它使用queue.py中定义的Queue。很明显,队列不是记事本的策略,将它置于策略之下没有任何意义。
我有一个想法是设置我的代码看起来像这样:
memoizer/
memoizer.py
tests.py
strategies/
__init__.py
perfect.py
mru/
__init__.py
mru.py
queue.py
README
这个设置的问题是现在用户必须知道mru在子包中。
另一个想法是安排这样的结构:
memoizer/
memoizer.py
tests.py
strategies/
__init__.py
perfect.py
mru.py
dependencies/
__init__.py
queue.py
README
这可以解决我的问题,但直觉上似乎是错误的方法。
组织我的文件以解决这种不一致的正确方法是什么?
答案 0 :(得分:3)
我建议改变第二种结构:
memoizer/
memoizer.py
tests.py
strategies/
__init__.py
perfect.py
mru/
__init__.py <- This is what used to be mru.py
queue.py
README
然后用户可以import memoizer.strategies.mru
。
这是快速简便的方法。但是,您可以保留原始mru.py
文件,并在__init__.py
中公开其中的项目,如下所示:
import mru as _mru
SomeClass = _mru.SomeClass
# etc...