为什么不能在 __init__ 关键字参数中使用 class 变量?

Why can't class variables be used in __init__ keyword arg?

我找不到任何关于 class 何时可以引用自身的文档。在下面它将失败。这是因为 class 已经创建但直到 __init__ 的第一行之后才初始化,对吗?

class A(object):
    class_var = 'Hi'
    def __init__(self, var=A.class_var):
        self.var = var

所以在我想要这样做的用例中,这是最好的解决方案:

class A(object):
    class_var = 'Hi'
    def __init__(self, var=None)
        if var is None:
            var = A.class_var
        self.var = var

感谢任何帮助或文档!

Python 脚本随您进行解释。因此,当解释器输入 __init__() 时,class 变量 A 尚未定义(您在其中),与 self 相同(这是一个不同的参数,仅可用在函数体中)。

然而 class 中的任何内容都是从上到下解释的,因此 class_var 已定义,因此您可以简单地使用它。

class A(object):
    class_var = 'Hi'
    def __init__(self, var=class_var):
        self.var = var

但我不太确定这在不同的解释器中是否稳定...