我一直在努力解决这个问题,我一定是遗漏了一些基本的东西(原谅我,我是 Python 开发的新手):
我有一个这样的包结构:
base
|
-->util
__init__.py
Class1.py
Class2.py
__init__.py
Main.py
我的类(class)相当温和:
class Class1(object):
def __init__(self):
# some methods...
class Class2(object):
def __init__(self):
# more methods...
在 Main.py
中,我有:
import utils
if __name__ == '__main__':
c1 = utils.Class1()
c2 = utils.Class2()
我的 PYTHONPATH
设置为包括 src
、src\base
和 src\base\utils
。但是,Python 在尝试运行 Main.py
时给我这个错误:
AttributeError: 'module' object has no attribute 'Class1'
有没有人遇到过这个,你知道如何解决吗?谢谢!
最佳答案
这与 Java 略有不同。在java中每个文件通常是一个类,在python中,每个文件是一个模块。鉴于您在此处描述的场景,您将执行以下操作:
import utils.Class1
import utils.Class2
if __name__ == '__main__':
c1 = utils.Class1.Class1()
c2 = utils.Class2.Class2()
您可以在这里做很多事情。例如,您可以有一个名为“资源”的模块,如下所示:
base ->
utils ->
resources.py
其中包含 Class1 和 Class2。然后你可以这样做:
import utils.resources
c1 = utils.resources.Class1()
等但关键是 classes != python 中的文件
关于Python嵌套包问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9507896/