mev*_*ron 1 python nested package
我一直试图解决这个问题,我必须在这里遗漏一些基本的东西(原谅我,我对Python开发相对较新):
我有这样的包结构:
base
|
-->util
__init__.py
Class1.py
Class2.py
__init__.py
Main.py
Run Code Online (Sandbox Code Playgroud)
我的课程相当温和:
class Class1(object):
def __init__(self):
# some methods...
class Class2(object):
def __init__(self):
# more methods...
Run Code Online (Sandbox Code Playgroud)
在Main.py
,我有:
import utils
if __name__ == '__main__':
c1 = utils.Class1()
c2 = utils.Class2()
Run Code Online (Sandbox Code Playgroud)
我PYTHONPATH
是设置包括src
,src\base
,和src\base\utils
.但是,Python在尝试运行时给出了这个错误Main.py
:
AttributeError: 'module' object has no attribute 'Class1'
Run Code Online (Sandbox Code Playgroud)
有人遇到过这个,你知道怎么解决吗?谢谢!
这与Java略有不同.在java中,每个文件通常都是一个类,在python中,每个文件都是一个模块.根据您在此描述的场景,您可以:
import utils.Class1
import utils.Class2
if __name__ == '__main__':
c1 = utils.Class1.Class1()
c2 = utils.Class2.Class2()
Run Code Online (Sandbox Code Playgroud)
你可以在这里做很多事情.例如,你可以有一个名为"resources"的模块,如下所示:
base ->
utils ->
resources.py
Run Code Online (Sandbox Code Playgroud)
它包含Class1和Class2.然后你可以这样做:
import utils.resources
c1 = utils.resources.Class1()
Run Code Online (Sandbox Code Playgroud)
但关键是class!= python中的文件