Python嵌套包问题

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)

有人遇到过这个,你知道怎么解决吗?谢谢!

tur*_*der 5

这与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中的文件