我有一个带有可选参数的类定义。 我想用实例变量的值启动可选参数。 这可能吗?
示例:
class Helloworld:
def __init__(self):
self.var1 = 'abc'
self.var2 = 123
def printString(info, message=self.var1):
print(info + ' - ' + message)
在此示例中,我想将printString
的{{1}}参数与实例变量message
答案 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