我有以下目录结构:
ican/
__init__.py
haz/
__init__.py
apple.py
grape/
__init.py
grape.py其中apple.py和grape.py有水果类定义。在另一个测试文件中,我试图通过类似于myapple = ican.haz.apple()或mygrape = ican.haz.grape()的方法加载一个水果类。
加载此类类的正确目录结构和import结构是什么?我也尝试过像import ican.haz as icanhaz这样的东西,然后调用myapple = icanhaz.apple()。我希望将我所有的类放在同一个位置,并通过类似于ican.haz.<class>的东西加载它们。
发布于 2015-03-31 18:03:00
也要统一
( a) apple.py应该在带有init的apple文件夹中低一级,或者
( b) grape.py应该更高一级,而不是在自己的grape文件夹中。
然后,您的导入将是from ican.haz.apple import Apple和from ican.haz.grape import Grape (用于选项a);或from ican.haz import apple, grape (用于选项b)。
要获得所需的结构,请使用选项b并修改haz下的init。
haz/__init__.py
from .apple import Apple
from .grape import Grape
__all__ = ['Apple', 'Grape']并将其导入为import ican.haz.* (不过,它被认为是糟糕的风格)。而且它正在对模块和类名~(不再是自类名更正后)进行破坏。最好在下面的一行中加上选项a或b。
顺便说一句,按照您目前的结构,进口产品需要:
from ican.haz import apple
from ican.haz.grape import Grape
a = apple.Apple()
g = Grape()https://stackoverflow.com/questions/29375231
复制相似问题