在python中使用新方法修补类之后,是否可以检查此方法的身份?
将函数指定为方法后,我找不到任何方法来检查其身份。所有比较都返回False
:
In [1]: class A(object):
...: pass
...:
In [2]: a = A()
In [3]: def b(inst):
...: pass
...:
In [4]: A.c = b
In [5]: a.c is b
Out[5]: False
In [6]: a.__class__.c is b
Out[6]: False
In [7]: A.c is b
Out[7]: False
In [8]: type(b)
Out[8]: function
In [9]: type(a.c)
Out[9]: instancemethod
In [10]: type(a.__class__.c)
Out[10]: instancemethod
In [11]: type(A.c)
Out[11]: instancemethod
答案 0 :(得分:1)
是的,使用修补方法的__func__
属性:
>> type(a.c.__func__)
<class 'function'>
>> a.c.__func__ is c
True