如何为python中的包获取一个干净的导入命名空间?

2024-05-07 23:32:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我肯定这是微不足道的,但我想不出来。在

目录结构:

mylib/__init__.py
mylib/MyClass.py

init.py读取:

^{pr2}$

在我的class.py公司名称:

class MyClass(object): 
    def __init__(self):
        pass

我必须使用mylib.MyClass.MyClass(),当我想要的时候mylib.MyClass公司()

我认为要想让这个工作起来,我必须把所有的=[我的课。我的课]但那没用。在

你怎么做到的?在

注意。我理解这里发生了什么;文件本身就是一个名称空间,比如说,在一个文件中有多个类。但是,我在每个.py文件中只有一个类,所以我不需要这种详细程度。在

也就是说。 我有这个:

>>> import mylib
>>> tmp = mylib.MyClass.MyClass()

我想要这个:

>>> import mylib
>>> tmp = mylib.MyClass()

Tags: 文件pyimport目录名称objectinitdef
1条回答
网友
1楼 · 发布于 2024-05-07 23:32:03

在您的__init__.py中,从import MyClass开始,尝试from MyClass import MyClass。在

前一个命令将模块的名称导入到您的命名空间中;第二个命令从模块(在本例中是类的名称)中导入符号。在

另外,__all__应该是一个名称的列表,即字符串,而不是引用。在

一般来说,在Python中,将类划分为一个文件没有任何好处,这样做有一些轻微的缺点。通常您的所有类都在一个文件中,并且用户已经能够以mylib.MyClass的身份访问您的类。在

相关问题 更多 >