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

标签 python syntax nested-class

有没有一种简单的方法可以在保持所有 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

最佳答案

没有。在定义 classC 时,classA 还不存在。

它仅在其主体完全执行后才创建。 (主体执行创建的字典是类创建调用的一个参数 class = type('classname', (superclass_1, superclass_2, superclass_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

关于python - 在 Python 中嵌套 3 个类时语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14238214/

相关文章:

javascript - ul li嵌套类jquery悬停

python - 如何在一个 pandas 数据框列中搜索字符串作为另一个数据框列中的子字符串

python - Pygame mixer.music.load() 不适用于 gTT

ruby - Haml - 如何将 ruby​​ 变量放入类标识符的名称中

syntax - Go是否接受变量中的空格,就像下划线一样?它有什么作用?

c++ - 从嵌套类的函数访问父类的非静态成员

python - SQLAlchemy、sqlite 和 fork()

python - 对于文件中的行不起作用 - Python

Python Singletons 语法以及为什么它看起来像那样?

c++ - 带有友元运算符的模板类的嵌套类,编译错误