如何在Python类中将实例变量作为关键字参数的默认值赋值

3 投票
2 回答
1170 浏览
提问于 2025-04-18 02:17

在Python 3.3及以上版本中,如果你有一个类,这个类里面有一个方法,并且这个类有一个实例变量,我们可以把它称作self.FALSE。那我该怎么把这个实例变量当作关键字参数的默认值呢?

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

当然,这样做是行不通的,因为关键字参数的默认值的作用范围不包括self(也不包括Test类本身)。不过,它确实包括全局变量和一些对象。

有没有办法做到这一点呢?我现在并不急需这样做,但如果能实现的话,那就太好了。我本以为可以把任何东西作为关键字参数的默认值传入。肯定有办法的。

2 个回答

2

其实是没有办法的,因为实例属性(也就是对象的特性)在对象被创建之前是不存在的,而方法是在类被创建的时候就定义好了,那时候还没有任何对象存在。换句话说,你在问题中提到的“类有一个实例变量”是不对的。类本身并没有这样的东西;只有当对象被创建时,它们才会有这个变量。

你需要按照thefourtheye的建议,在方法内部处理默认值的赋值。

6

一开始,key的默认值是None,在这个函数里,如果keyNone,那么你可以设置一个你喜欢的默认值。

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

另外,在Python中不需要像C/C++/JAVA那样使用分号。

撰写回答