我想要一个函数来告诉我test
是基类的原始版本还是派生类中实现的新版本。我发现inspect.getfullargspec
可以解决我的问题,但不适用于我的情况所需的Python 3。
class base_class(object):
@staticmethod
def test(a, b, c):
pass
class child_class(base_class):
@staticmethod
def test(a, b):
pass
class child_class_2(base_class):
pass
答案 0 :(得分:3)
您不需要进行任何花哨的检查:
>>> x = child_class_2()
>>> x.test
<function base_class.test at 0x7fea1a07f7b8>
>>> y = child_class()
>>> y.test
<function child_class.test at 0x7fea1a07f950>
默认情况下,打印名称来自该函数的__qualname__
属性:
>>> x.test.__qualname__
base_class.test
>>> y.test.__qualname__
child_class.test
一种获取类名的方法很简单
x.test.__qualname__[:-len(x.test.__name__) - 1]