Instance属性作为默认参数

时间:2014-12-31 08:54:58

标签: python python-3.x default-value kwargs

我使用Python 3,我对kwargs有小问题。是否可以将实例属性用作默认参数值?我的意思是这样的:

class foo:
    def __init__(self, a,b):
        self.a = a
        self.b = b

    def setNewA(self, a=self.a):
        print(a)

但我有一个错误:

NameError: name 'self' is not defined

如果我使用课程名称,我有:

AttributeError: type object 'foo' has no attribute 'a'

我知道另一种方法是使用这样的东西:

    def setNewA(self, a=None):
        a = a or self.a
        print(a)

但也许有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

不确定这是否适合您的用例,但是这个怎么样?

>>> class foo:
...    b = 1
...
...    def setNewA(self, a=b):
...        print(a)
>>> 
>>> f = foo()
>>> f.setNewA()
1
>>> f.setNewA(2)
2