【问题标题】:Create Python Namespace Without File Name创建没有文件名的 Python 命名空间
【发布时间】:2025-12-27 07:50:07
【问题描述】:

我是 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

现在假设我想在B.py 中引用类A。我怎样才能使B.py 看起来像这样:

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

不是这样的:

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

本质上,我想将类分组到一个命名空间中,而不必将所有类放入一个文件中。

【问题讨论】:

    标签: python python-3.x namespaces


    【解决方案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

    【讨论】:

    • 感谢您指出语法错误。按照您的回答,对于 pandas 库,我可以通过添加 from pandas import DataFrame 来导入 DataFrame,但根据源代码,看来我必须输入 from pandas.core.frame import DataFrameSeries 类也是如此。 pandas 的设置有何不同?
    • 我没有用过 pandas 库,所以很遗憾我不能为你回答这个问题。最好你应该为此提出一个新问题。如果对你有帮助,请接受我的回答
    • @Hydrosis pandas 也将特定的子模块导入其*模块。这是通过将导入放入 pandas/__init__.py 文件来完成的:github.com/pandas-dev/pandas/blob/…