如何在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
访问您的类