Python 内部 class 可以是它自己的外部 class 的子 class 吗?

Can a Python inner class be a subclass of its own outer class?

这个...

class A(object):
    class B(A):
        def __init__(self):
            pass

... 抛出 "NameError: name 'A' is not defined".

是否有正确的语法来完成此操作,或者我必须使用像这样的变通方法?

class A(object):
    pass
class _B(A):
    pass
A.B = _B

先验是非常可取的。谢谢。

应 OP 要求,发布作为答复。

  1. 那是内class,不是子class。

  2. 不,内部 class 不能继承(不是扩展)它的外部 class 因为外部 class 在定义内部时没有完全定义class.

  3. 您的解决方法不是解决方法,因为它没有内部 class。你混淆了 subclasses 和 inner classes

您不能以正常方式执行此操作,并且可能不应该这样做。

对于那些有正当理由尝试类似操作的人,有一个解决方法,即在 A 完全定义后动态更改 A.B 的超类(请参阅 )。

这可能是糟糕的代码,是一个大 hack,不应该这样做,但它在特定条件下有效(参见链接的答案)

class T: pass
class A(object):
  def a(self):
    return "Hallo a"
  class B(T):
    def b(self):
      return "Hallo b"
A.B.__bases__ = (A,)
b=A.B()
assert isinstance(b, A)
assert b.a()=="Hallo a"

现在你甚至可以做一些奇怪的事情了 x = A.B.B.B.B()