为什么不能在 __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
但我不太确定这在不同的解释器中是否稳定...
我找不到任何关于 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
但我不太确定这在不同的解释器中是否稳定...