编程语言
首页 > 编程语言> > Python __index__特殊方法

Python __index__特殊方法

作者:互联网

>>> class Thing(object):
...     def __index__(self):
...         return 1
... 
>>> thing = Thing()
>>> list_ = ['abc', 'def', 'ghi']
>>> list_[thing]
'def'
>>> dict_ = {1: 'potato'}
>>> dict_[thing]
# KeyError

当通过列表访问时,事物如何知道将自己表示为1,而不是通过字典来表示?这两种魔术方法都不能通过__getitem__吗?列表显示的用法可以通过__int__代替__index__的存在理由是什么?

解决方法:

Dict和List没有以相同的方式实现__getitem__. Dict对象使用对象的__hash__上的比较(__eq__)作为__getitem__中使用的键.

为了使Thing可用于dict,你必须同时实现hash和eq.

标签:python,magic-methods
来源: https://codeday.me/bug/20191006/1861265.html