Python 3 のメソッド ラッパー タイプとは何ですか? 次のようにクラスを定義すると:
class Foo(object):
def __init__(self, val):
self.val = val
def __eq__(self, other):
return self.val == other.val
そして、次のようにします。
Foo(42).__eq__
私は得る:
<bound method Foo.__eq__ of <__main__.Foo object at 0x10121d0>>
しかし、もしそうなら(Python 3で):
Foo(42).__ne__
私は得る:
<method-wrapper '__ne__' of Foo object at 0x1073e50>
「メソッドラッパー」タイプとは何ですか?
編集: より正確に申し訳ありません:class method-wrapper
のタイプ__ne__
です。
>>> type(Foo(42).__ne__)
<class 'method-wrapper'>
のタイプ__eq__
は次のとおりです。
>>> type(Foo(42).__eq__)
<class 'method'>
さらにmethod-wrapper
、クラスの未定義のマジックメソッドのタイプのようです(明示的に定義されていない場合__le__
、__repr__
、__str__
などにもこのタイプがあります)。
私が興味を持っているのは、method-wrapper
クラスが Python でどのように使用されているかです。クラスのメソッドのすべての「デフォルト実装」は、このタイプの単なるインスタンスですか?