启动类定义的可选变量,其默认值与实例变量相同

时间:2017-06-27 12:43:53

标签: python function class

我有一个带有可选参数的类定义。 我想用实例变量的值启动可选参数。 这可能吗?

示例:

class Helloworld:
    def __init__(self):
        self.var1 = 'abc'
        self.var2 = 123

  def printString(info, message=self.var1):
      print(info + ' - ' + message)

在此示例中,我想将printString的{​​{1}}参数与实例变量message

相同

2 个答案:

答案 0 :(得分:2)

没有。这是不可能的。

到定义printString时,没有实例(即未定义self)。

相反,请使用None作为默认值,并在必要时进行分配:

class Helloworld:
    def __init__ (self):
        self.var1 = 'abc'
        self.var2 = 123

    def printString (self, info, message=None):
        if message is None:
            message = self.var1
        print(info + ' - ' + message)

另请注意,您未将self传递给printString,因此info不会包含您所期望的内容。

答案 1 :(得分:-1)

您的示例代码和DeepSpace的答案是关于 instance 变量,它不能直接用作方法的默认参数。但你质疑标题是关于类变量的,你的示例方法实际上可能是静态的。

所以你可以这样使用 class 变量:

class Helloworld:
    var1 = "abc"    # define class variable Foo.var1
    @staticmethod
    def printString(info, message=var1):    # use it as a default parameter
        print(info + ' - ' + message)

然后您可以使用:

Helloworld.printString("123")
=> 123 - abc