创建不带文件名的Python命名空间

时间:2019-04-04 01:02:34

标签: python-3.x namespaces

我是Python的新手,我试图弄清楚如何最好地组织我的代码。我打算在自己的文件中添加一些类,并且我想引用这些类而不必指定文件名。例如,假设我有一个这样的结构:

my_project/
└── module1/
    ├── A.py
    └── B.py

A.py

class A:
    def foo(self):
        raise NotImplementedError

B.py

class B:
    def foo(self):
        raise NotImplementedError

现在让我们说我想在A中引用类B.py。如何使B.py看起来像这样:

import A
class B:
    def foo(self):
        return A()

不是这样的:

from a import A
class B:
    def foo(self):
        return A()

基本上,我想将类分组为一个名称空间,而不必将我所有的类都放入一个文件中。

1 个答案:

答案 0 :(得分:1)

首先,您需要更正类的语法,您的类应该是

class A:
    def foo(self):
        raise NotImplementedError

from a import A

class B:
    def foo(self):
        return A()

现在您需要执行from a import A而不是import A的原因是因为A是一个驻留在python文件.py中的类,并且您需要告诉解释器类A的定义位置,否则解释器不知道在哪里找到A