バインドされたメソッドが何らかの方法で渡されるPython 3プログラムを考えてみましょう。どのようにして、メソッドをクラス定義でそれらを定義する元の関数と比較しますか? OOP用語で表現されています:バインドされたメソッドが関数のインスタンスであるかどうかをチェックする方法関数をPythonのバインドされたメソッドと比較する3
は、いくつかのREPL-INGとexamplifyます:私は上記の達成したいことはo.mが何らかの方法でC.mに関連しているかどうかを確認することができることです
>>> class C(object):
... def m(self):
... print("Calling m")
...
>>> o = C()
>>> print(o.m)
<bound method C.m of <__main__.C object at 0xb6f56d6c>>
>>> print(C.m)
<function C.m at 0xb6f4c6a4>
>>> if o.m == C.m:
... print("Equality")
...
>>> if isinstance(o.m, C.m):
... print("Relation")
...
Traceback ...
。
もちろん、C.mとo.mの文字列表現を取ることができます。正規表現はC.mを読み取る部分を切り取り、o.mはC.mに関連する結果に終わります。しかし、この問題に対処するにはより良い方法が必要です。