评估自身内部功能



我很难让以下代码正常工作。func函数应该只返回self.test值,但代码似乎无法完成任务。我想要self.test作为函数的默认值。

class model():
def __init__(self):
self.test=1

def func(self, test=self.test):
return(test)
model=model()
model.func()

函数默认值是在定义时计算的,而不是每次在没有必要参数的情况下调用函数时计算的。因此,self只是一个名称,而不是调用函数的对象。

相反,您只需要一个sentinel,这是一个可以在运行时用来确定是否传递了参数的值。通常,您可以使用None,但是当None是一个有效的参数时,您需要选择一个不同的值。

def func(self, test=None):
if test is None:
test = self.text
return test

你可以这样做:

class model():
def __init__(self):
self.test=1

def func(self, test=None):
# replaces only None test with self.test
if test is None:
test = self.test 
return test 
def func2(self, test=None):
# replaces any falsy test with self.test 
# falsy are [], {}, "", 0, ...
test = test or self.test
return test 
model = model()
model.func()

两者都会禁用将None作为有效值提供给函数的功能。

最新更新