Python - 具有可选参数的类的方法,默认值为类成员

时间:2016-08-25 09:51:33

标签: python

我有类似的东西(我知道这段代码不起作用,但它更接近我想要实现的目标):

class A:
    def __init__(self):
        self.a = 'a'

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

myClass = A()

myClass.method('b') # print b
myClass.method() # print a

到目前为止我做了什么,但我不喜欢它,是:

class A:
    def __init__(self):
        self.a = 'a'

    def method(self, a=None):
        if a is None:
            a = self.a

        print a

myClass = A()

myClass.method('b') # print b
myClass.method() # print a

2 个答案:

答案 0 :(得分:3)

默认参数在定义时间进行评估。到定义类和方法时self.a不是。

您的工作代码示例实际上是实现此行为的唯一干净方法。

答案 1 :(得分:2)

默认值是在方法定义时计算的,即解释器执行类主体时,通常只发生一次。将动态值指定为默认值只能在方法体内进行,并且您使用的方法完全没问题。