【发布时间】:2019-10-21 11:50:23
【问题描述】:
看看下面的代码。
我想在类方法my_method() 的声明中使用a 的值作为参数c 的默认值。
我该怎么做?下面的例子失败了。
>>> class X:
... a = 'hello'
... def __init__(self, b):
... self.b = b
... @classmethod
... def my_method(cls, c=X.a):
... print 'cls.a = {}'.format(cls.a)
... print 'c = {}'.format(c)
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in X
NameError: name 'X' is not defined
【问题讨论】:
-
在那个范围内它只是
a。但是,这真的是你想要的吗?因为它不会随着class属性而改变,也就是说,如果你改变X.a,那么默认为my_method仍然是'hello' -
一种方法。将
c的默认值设置为None,如果c是None,则在函数体中分配c = X.a。 example
标签: python class-method class-attributes