在Python中嵌套3个类时语法错误?

在Python中嵌套3个类时语法错误?,python,syntax,nested-class,Python,Syntax,Nested Class,有没有一种简单的方法可以在保持所有3个级别的同时修复此错误 从对象派生ClassA没有帮助 提前谢谢 >>> class classA: ... class classB(object): ... def __init__(self): ... self.b = 3 ... class classC(classA.classB): ... def __init__(self): ...

有没有一种简单的方法可以在保持所有3个级别的同时修复此错误

从对象派生ClassA没有帮助

提前谢谢

>>> class classA:
...     class classB(object):
...         def __init__(self):
...             self.b = 3
...         class classC(classA.classB):
...             def __init__(self):
...                 super(classC, self).__init__()
...                 self.c = 4
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in classA
  File "<stdin>", line 5, in classB
NameError: name 'classA' is not defined
>>A类:
...     B类(对象):
...         定义初始化(自):
...             self.b=3
...         C类(A类、B类):
...             定义初始化(自):
...                 super(classC,self)。\uuuu init\uuuuuu()
...                 self.c=4
...
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“”,第2行,在classA中
文件“”,第5行,B类
NameError:未定义名称“classA”

否。在定义
classC
时,
classA
尚不存在

它仅在其主体完全执行后创建。(从主体的执行中创建的dict是类创建调用
class=type('classname',(超类_1,超类_2,超类_3),said_dict}的一个参数)

最简单的方法是在同一级别定义它们

如果绝对需要,您可以稍后修改它们:

class classA:
    pass
class classB(object):
    def __init__(self):
        self.b = 3
class classC(classB):
    def __init__(self):
        super(classC, self).__init__()
        self.c = 4
classA.classB = classB
classB.classC = classC

也许像这样的方法会奏效:

class classA:
    pass

class classB(object):
    def __init__(self):
        self.b = 3
classA.classB = classB

class classC(classA.classB):
    def __init__(self):
        super(classC, self).__init__()
        self.c = 4

classA.classB.classC = classC

你为什么要这样做?类名会更短,代码也会更可读,你想知道为什么thid=s不起作用;也许我错过了一些重要的概念。classA.classB.classC比
classC
短不了多少。@glglgl也许他用这个保存了一个或另一个前缀。除了使最后一行更详细之外,这对@glglgl的答案没有任何补充。@Duncan,你是对的,但是当我发布它时,glglglgl的答案没有代码。在你的答案中添加一个解释,解释为什么在类主体中的所有语句都被执行之前classA不能存在,这可能是有用的。