Мой вопрос касается двух ответов на другой вопрос: Использование методов класса/статических методов в качестве значений параметров по умолчанию в методах того же класса.
Я пытаюсь понять, действительно ли есть разница между тем, что делают два ответа, и если да, то каковы плюсы и минусы каждого из них.
Вопрос: как использовать метод класса в качестве параметра по умолчанию для метода того же класса.
Ответ 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)
Первоначально это было написано на Python 2, но мое резюме (надеюсь) на Python 3.