hex() 方法在与自定义对象一起使用时出错

hex() method giving error when used with custom object

我正在尝试使用魔术方法 __hex__ 模拟自定义对象的内置 hex() 方法。我收到以下错误,我无法弄清楚为什么会这样所以。

class Point:
    def __init__(self,x):
        self.x= x

    def __hex__(self):
        return hex(self.x)

p1=Point(10)
print(hex(p1))

TypeError: 'point' object cannot be interpreted as an integer

但是当我使用 p1.__hex__() 而不是 hex(p1) 调用 hex 方法时,代码工作正常

>>>print(p1.__hex__())
0xa

你能解释一下为什么会这样吗?

你需要做的就是制作一个__index__方法:

class Point:
    def __init__(self, x):
        self.x = x

    def __index__(self):
        return self.x