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

ではbarenameが必要ですが_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 に答える