在Python中嵌套3个类时语法错误?
有没有一种简单的方法可以在保持所有3个级别的同时修复此错误 从对象派生ClassA没有帮助 提前谢谢在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): ...
>>> 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不能存在,这可能是有用的。