在Python 3.3+中,给定一个带有方法的类,该类有一个实例变量,它是一个简单的object()对象(我们称之为self.FALSE)。如何将该实例变量用作关键字参数的默认值?
class Test:
def __init__(self):
self.FALSE=object();
def Tester(self, key=self.FALSE):
pass;
当然,这不起作用,因为关键字参数默认值的范围不包括self(通常也不包括Test类)。但它确实包括全局变量和至少一些对象。
有办法做到这一点吗?我现在没有急需,但如果我能以某种方式做到这一点,那将是非常好的。我认为你可以作为关键字参数默认值传递任何内容。当然必须有办法。
答案 0 :(得分:5)
最初将默认值key
设为None
,如果key
为None
,则在函数中,您可以设置默认值,无论您喜欢什么。
def Tester(self, key=None):
if key is None:
key = self.FALSE
另外,你不需要Python中的分号,就像我们在C / C ++ / JAVA中所需要的那样。
答案 1 :(得分:1)
没有办法,因为实例属性在创建实例之前不存在,但是在创建类之前,在任何实例存在之前定义方法。也就是说,(正如你在你的问题中所做的那样)"该类有一个实例变量"是不正确的。班上没有这样的东西;只有实例具有该变量,并且仅在创建它们的时候。
你必须按照方式建议并处理在方法体内分配默认值。