Python 3中的__int__和__index__方法有什么区别?

23 python casting

Python 3.2文档的Data Model部分提供了以下关于__int____index__方法的描述:

object.__int__(self)

被称为实现内置[功能int()].应该返回[整数].

object.__index__(self)

被叫实施operator.index().每当需要的Python的整数对象(如在切片,或在内置也称为bin(),hex()oct()函数).必须返回一个整数.

我知道它们用于不同的目的,但我一直无法弄清楚为什么需要两种不同的方法.这些方法有什么区别?__index__ = __int__在我的课程中使用别名是否安全?

Alo*_*hal 16

请参阅PEP 357:允许任何对象用于切片.

nb_int方法用于强制,因此意味着与此处要求的根本不同的东西.这个PEP提出了一种方法,可以将其视为一个整数,当需要一个整数时,将该信息传递给Python.使用的最大例子nb_int是坏事,浮动对象已经定义了nb_int方法,但浮动对象应该用作序列中的索引.

编辑:它似乎是在Python 2.5中实现的.