我包中的模块具有绕过__init__.py的“ self”属性

时间:2019-03-28 12:54:15

标签: python-3.x installation package

我已经在Python 3中构建了一个程序包。问题是,当我导入该程序包时,每个模块都具有在 __ init __。py 中指定的那些功能,以及一个与具有实际包装中所有功能的模块(例如package.package)。

我试图更改我的 __ init __。py 文件,但我想我对它的工作方式不了解。 我的包裹看起来像这样:

package/
    __init__.py
    package.py (same name used here)
    _someprivatestuff.py
    io/
        __init__.py
        io.py
    vis/
        __init__.py
        vis.py

拳头 __ init __。py 包含以下内容:

from .package import exception1
from .package import exception2
from .package import class1
from .package import class2
from .package import class3

异常和类位于package.py中。

现在,如果导入模块,则可以访问package.py中的所有其他函数以及此python文件中导入的模块:

import package

package.class1 # this should output 'package.class1'
>>> <class 'package.package.class1'>
package.package.someprivateclass # package.package is somehow accesible
>>> <class 'package.package.someprivateclass'>

1 个答案:

答案 0 :(得分:0)

package.package是一个模块,其中具有功能,因此您可以作为package.package.someprivateclass来访问它们。仅仅是因为您已将某些名称从.package导入到__init__.py中,并不意味着您尚未导入的名称将被隐藏。