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

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

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

有没有办法做到这一点?我现在没有迫切的需要,但如果我能做到这一点,那就太好了。我认为你可以将任何东西作为关键字参数默认值传递。肯定有办法。

有帮助吗?

解决方案

最初有默认值 key 作为 None 而在功能中,如果 keyNone, ,然后你可以设置默认值,无论你喜欢什么。

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

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

其他提示

没有办法,因为在创建实例之前不存在实例属性,但在创建类时,在任何存在的情况下都定义了方法。也就是说,说(在你的问题中,你在你的问题中)“类有一个实例变量”是不正确的。班上没有这样的东西;只有实例只有该变量,才能且仅在创建它们时。

您必须这样做,因为furtheye建议并处理在方法主体内部分配默认值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top