为什么python第三层嵌套类不能互相继承?

问题描述 投票:1回答:1

此代码在python中有效:

class Inner:
    class InnerInner:
        attr = 1

class Inner2(Inner):
    class InnerInner2(Inner.InnerInner):
        attr = 2

为什么在python中无法执行以下操作?

class Outer:
    class Inner:
        class InnerInner:
            attr = 1

    class Inner2(Inner):
        class InnerInner2(Inner.InnerInner):
            attr = 2

它给我以下错误:

class InnerInner2(Inner.InnerInner):NameError:未定义名称“内部”

我希望Inner在开始定义Inner2之前会完全定义。

python python-3.x inner-classes
1个回答
0
投票
失败的相同原因:

class Foo: a = 1 def bar(self): return a Foo().bar()

就像bar内部的代码看不到Foo范围内的任何东西,Inner2内部的代码看不到Outer范围内的任何东西。

Inner

是完全由您尝试使用它的点定义,但是它在您无法访问的范围内。

© www.soinside.com 2019 - 2024. All rights reserved.