我的问题是关于另一个问题的两个答案:在同一类的方法中使用类/静态方法作为默认参数值。
我试图了解这两个答案的作用是否真的有区别,如果是,那么每个答案的优缺点是什么。
问题:如何使用类方法作为同一个类中方法的默认参数。
答案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。