我一直试图解决这个问题,我必须遗漏一些基本的东西(原谅我,我对Python开发相对较新):
我有这样的包结构:
base
|
-->util
__init__.py
Class1.py
Class2.py
__init__.py
Main.py
我的课程相当温和:
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'
是否有人遇到此问题,你知道如何解决这个问题吗?谢谢!
答案 0 :(得分:5)
这与Java略有不同。在java中,每个文件通常都是一个类,在python中,每个文件都是一个模块。根据您在此描述的情景,您可以这样做:
import utils.Class1
import utils.Class2
if __name__ == '__main__':
c1 = utils.Class1.Class1()
c2 = utils.Class2.Class2()
你可以在这里做很多事情。例如,您可以拥有一个名为“resources”的模块,如下所示:
base ->
utils ->
resources.py
包含Class1和Class2。然后你可以做类似的事情:
import utils.resources
c1 = utils.resources.Class1()
等。但关键是class!= python中的文件
答案 1 :(得分:0)
您是否已将类导入到utils模块的 main .py中? 只需添加到utils / init .py:
from Class1 import Class1
from Class2 import Class2
然后在你的main.py中,“import utils”会将这些文件导入为utils.Class1等