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

Chr*_*ris 0 python argument-passing

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

def method(self, arg1=0, arg2=self.member):
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*lli 5

是的,使用哨兵 - 例如:

class Foo(object):
    _sentinel = object()
    def method(self, arg1=0, arg2=_sentinel):
        if arg2 is self._sentinel: arg2 = self.member
        ...
    ...
Run Code Online (Sandbox Code Playgroud)

注意,您需要barename _sentineldef,但self._sentinel在方法的主体(因为这是作用域的工作方式在课堂机构VS方法体;-).