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

如何在python中为包获取干净的导入命名空间?,python,Python,我肯定这是小事,但我想不出来 目录结构: mylib/__init__.py mylib/MyClass.py init.py读取: import MyClass __all__ = [MyClass] MyClass.py: class MyClass(object): def __init__(self): pass 我必须使用mylib.MyClass.MyClass()创建MyClass的实例,如果我希望它是mylib.MyClass()的话 我原以为要让

我肯定这是小事,但我想不出来

目录结构:

mylib/__init__.py
mylib/MyClass.py
init.py读取:

import MyClass
__all__ = [MyClass]
MyClass.py:

class MyClass(object): 
    def __init__(self):
        pass
我必须使用mylib.MyClass.MyClass()创建MyClass的实例,如果我希望它是mylib.MyClass()的话

我原以为要让它发挥作用,我必须把所有的=[MyClass.MyClass],但那不起作用

你是如何让它工作的

注意。我理解这里发生的事情;文件本身是一个名称空间,例如,您可以说,在一个文件中有多个类。然而,我在每个.py文件中只有一个类,所以我不想要那个级别的细节

即。 我有这个:

>>> import mylib
>>> tmp = mylib.MyClass.MyClass()
我想要这个:

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

\uuuu init\uuuuu.py
中,不要使用
导入MyClass
尝试从MyClass导入MyClass

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

另外,
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

通常,在Python中,将类划分为一个文件并没有任何好处,这样做也有一些轻微的缺点。通常,您的所有类都在一个文件中,用户可以通过
mylib.MyClass
访问您的类