如何在Python类中将实例变量作为关键字参数的默认值赋值
在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
,在这个函数里,如果key
是None
,那么你可以设置一个你喜欢的默认值。
def Tester(self, key=None):
if key is None:
key = self.FALSE
另外,在Python中不需要像C/C++/JAVA那样使用分号。