如何在Python的同一个类中将实例变量指定为关键字参数的默认值

时间:2014-04-11 02:44:41

标签: python python-3.x instance-variables self keyword-argument

在Python 3.3+中,给定一个带有方法的类,该类有一个实例变量,它是一个简单的object()对象(我们称之为self.FALSE)。如何将该实例变量用作关键字参数的默认值?

class Test:
    def __init__(self):
        self.FALSE=object();
    def Tester(self, key=self.FALSE):
        pass;

当然,这不起作用,因为关键字参数默认值的范围不包括self(通常也不包括Test类)。但它确实包括全局变量和至少一些对象。

有办法做到这一点吗?我现在没有急需,但如果我能以某种方式做到这一点,那将是非常好的。我认为你可以作为关键字参数默认值传递任何内容。当然必须有办法。

2 个答案:

答案 0 :(得分:5)

最初将默认值key设为None,如果keyNone,则在函数中,您可以设置默认值,无论您喜欢什么。

def Tester(self, key=None):
    if key is None:
        key = self.FALSE

另外,你不需要Python中的分号,就像我们在C / C ++ / JAVA中所需要的那样。

答案 1 :(得分:1)

没有办法,因为实例属性在创建实例之前不存在,但是在创建类之前,在任何实例存在之前定义方法。也就是说,(正如你在你的问题中所做的那样)"该类有一个实例变量"是不正确的。班上没有这样的东西;只有实例具有该变量,并且仅在创建它们的时候。

你必须按照方式建议并处理在方法体内分配默认值。