我想编写一个带有参数的方法,该参数默认为成员变量,如下所示:
def method(self, arg1=0, arg2=self.member):
显然这是不允许的。我应该以不同的方式编写它,或者使用值arg2
来表示何时使用成员变量?
答案 0 :(得分:5)
是的,使用哨兵 - 例如:
class Foo(object):
_sentinel = object()
def method(self, arg1=0, arg2=_sentinel):
if arg2 is self._sentinel: arg2 = self.member
...
...
请注意,您需要_sentinel
中的名字def
,但方法正文中需要self._sentinel
(因为这是在类主体和方法主体中确定范围的方式;-)。
答案 1 :(得分:2)
def method(self, arg1=0, arg2=None):
if arg2 is None:
arg2 = self.member
...