相关疑难解决方法(0)

Python方法包装器类型?

Python 3中的方法包装器类型是什么?如果我这样定义一个类:

class Foo(object):
    def __init__(self, val):
        self.val = val
    def __eq__(self, other):
        return self.val == other.val
Run Code Online (Sandbox Code Playgroud)

然后做:

Foo(42).__eq__
Run Code Online (Sandbox Code Playgroud)

我明白了:

<bound method Foo.__eq__ of <__main__.Foo object at 0x10121d0>>
Run Code Online (Sandbox Code Playgroud)

但如果我这样做(在Python 3中):

Foo(42).__ne__
Run Code Online (Sandbox Code Playgroud)

我明白了:

<method-wrapper '__ne__' of Foo object at 0x1073e50>
Run Code Online (Sandbox Code Playgroud)

什么是"方法包装"类型?

编辑:抱歉更准确:class method-wrapper是类型__ne__,就像我做的那样:

>>> type(Foo(42).__ne__)
<class 'method-wrapper'>
Run Code Online (Sandbox Code Playgroud)

而类型__eq__是:

>>> type(Foo(42).__eq__)
<class 'method'>
Run Code Online (Sandbox Code Playgroud)

此外,method-wrapper似乎是类上任何未定义的魔术方法的类型(因此__le__,如果没有明确定义__repr__,则__str__等也将具有此类型).

我感兴趣的是method-wrapperPython 如何使用该类.类的方法的所有"默认实现"都只是这种类型的实例吗?

types python-3.x

32
推荐指数
2
解决办法
2万
查看次数

标签 统计

python-3.x ×1

types ×1