次のようなデフォルトのメンバー変数を持つ引数を持つメソッドを書きたかったのです。
def method(self, arg1=0, arg2=self.member):
どうやらこれは許可されていません。別の方法で記述する必要arg2
がありますか、それともメンバー変数をいつ使用するかを示すためにの値を使用する必要がありますか?
次のようなデフォルトのメンバー変数を持つ引数を持つメソッドを書きたかったのです。
def method(self, arg1=0, arg2=self.member):
どうやらこれは許可されていません。別の方法で記述する必要arg2
がありますか、それともメンバー変数をいつ使用するかを示すためにの値を使用する必要がありますか?
ええ、センチネルを使用してください - 例:
class Foo(object):
_sentinel = object()
def method(self, arg1=0, arg2=_sentinel):
if arg2 is self._sentinel: arg2 = self.member
...
...
ではbarenameが必要ですが_sentinel
、def
メソッドself._sentinel
の本体には必要です(クラス本体とメソッド本体でスコープが機能するためです;-)。
def method(self, arg1=0, arg2=None):
if arg2 is None:
arg2 = self.member
...