0

我想编写一个方法,其参数默认为成员变量,如下所示:

def method(self, arg1=0, arg2=self.member):

显然这是不允许的。我应该以不同的方式编写它,还是使用一个值arg2来表示何时使用成员变量?

4

2 回答 2

5

是的,使用哨兵——例如:

class Foo(object):
    _sentinel = object()
    def method(self, arg1=0, arg2=_sentinel):
        if arg2 is self._sentinel: arg2 = self.member
        ...
    ...

请注意,您需要_sentineldef, 但self._sentinel在方法的主体中使用裸名(因为这就是在类主体与方法主体中范围界定的方式;-)。

于 2010-04-05T18:04:29.223 回答
2
def method(self, arg1=0, arg2=None):
    if arg2 is None:
        arg2 = self.member
    ...
于 2010-04-05T18:04:31.113 回答