クラス インスタンスのメソッドと関数が同じかどうかを確認するにはどうすればよいですか?
デコレータを使用する単純なクラスがあります。
@decorate_class
class Hello:
@decorate_func
def world(self):
return
そして、これらは私のデコレータです:
# A global variable
global_func = None
def decorate_func(func):
global_func = func
return func
def decorate_class(clazz):
print clazz.__dict__["world"] == global_func
return clazz
上記は、 inがFalse
であるため可能ですが、 inは です。しかし、両方を印刷すると、次のようになります。type(func)
decorate_func
function
decorate_class
instancemethod
<function world at 0x7f490e59ce60>
のように、同じメモリアドレス。それらを比較して、それらが同じ機能であることを知るにはどうすればよいですか? メモリ アドレスによる比較は安全 (かつ正しい) ですか?