在方法声明中不可能引用自我?

时间:2010-04-05 17:59:26

标签: python argument-passing

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

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

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

2 个答案:

答案 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
    ...