为什么不能在__init__关键字arg中使用类变量?

时间:2016-10-06 19:54:13

标签: python class variables keyword-argument

我找不到关于何时类可以引用自身的任何文档。在下面它将失败。这是因为该类已经创建但直到__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

感谢任何帮助或文档!

1 个答案:

答案 0 :(得分:6)

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

然而,该类中的任何内容都是从上到下解释的,因此class_var已定义,因此您只需使用该类。

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

但我并不确定这会在不同的口译员中保持稳定......