如何将内部类的代码移动到不同的文件(Python)?

R B*_*R B 7 python module class

假设我有一些带有内部类的类:

class A:
   class B:
      ...
   ...
Run Code Online (Sandbox Code Playgroud)

我想在与 classB代码不同的文件中实现 classA以提高可读性。

如何做到这一点?


编辑:B除了A.B.

rlm*_*lms 5

你可以这样做:

b_class.py:

class _B:
    ...
Run Code Online (Sandbox Code Playgroud)

a_class.py:

import b_class

class A:
    B = b_class._B
    ...
Run Code Online (Sandbox Code Playgroud)

Pythonic OOP 的原则之一是“我们都是同意的成年人”。这意味着您通常不想强行隐藏信息。前导下划线过去表示“不要使用它”,但它们不会阻止访问内容。

尽管通常您不需要像这样嵌套类。你想这样做是为了什么?可能有更好的解决方案。

  • @RB 您有 J​​ava 或 C++ 背景吗?保护概念(私有、受保护、公共)并没有转化为 Python。正如 sweeneyrod 所指出的,如果您告诉我们**为什么**您需要该嵌套范围,可能会有更好的解决方案。 (2认同)
  • @msw - 我没有看到这里的矛盾。通过内部类,我的意思是我想通过“HMM.State”访问它,其中“HMM”是外部类,“State”是内部类。这是通过使用该结构的更复杂算法的代码来访问的。我希望能够像这样使用它,并在需要时查看/编辑不同文件中的类,为什么这是一个问题? (2认同)