私の質問は、別の質問に対する2つの答えについてです。同じクラスのメソッド内のデフォルトのパラメーター値としてクラス/静的メソッドを使用する。
私は、2つの答えが実際に違いがあるかどうか、もしそうなら、それぞれの長所と短所は何かを理解しようとしています。
質問:同じクラスのメソッドのデフォルトパラメータとしてクラスメソッドを使用する方法。
回答1:クラスメソッドの代わりに関数を使用する
class X:
def default_func(x):
return True
def test(self, func = default_func):
return func(self)
回答2:クラスメソッドを使用しますが、それを関数に変換します
def unstaticmethod(static):
return static.__get__(None, object)
class X:
@staticmethod
def default_func(x):
return True
def test(self, func = unstaticmethod(default_func)):
return func(self)
これは元々Python2で書かれていましたが、私の要約は(うまくいけば)Python3です。