我想编写一个方法,其参数默认为成员变量,如下所示:
def method(self, arg1=0, arg2=self.member):
显然这是不允许的。我应该以不同的方式编写它,还是使用一个值arg2
来表示何时使用成员变量?
我想编写一个方法,其参数默认为成员变量,如下所示:
def method(self, arg1=0, arg2=self.member):
显然这是不允许的。我应该以不同的方式编写它,还是使用一个值arg2
来表示何时使用成员变量?
是的,使用哨兵——例如:
class Foo(object):
_sentinel = object()
def method(self, arg1=0, arg2=_sentinel):
if arg2 is self._sentinel: arg2 = self.member
...
...
请注意,您需要_sentinel
在def
, 但self._sentinel
在方法的主体中使用裸名(因为这就是在类主体与方法主体中范围界定的方式;-)。
def method(self, arg1=0, arg2=None):
if arg2 is None:
arg2 = self.member
...