首页 > 解决方案 > __getitem__ 和 __len__ 属于哪个模块?

问题描述

在尝试理解 python 上的“魔法”或特殊方法并阅读本文档时,我的印象是任何对象都会有这些方法。

如果我们做一些简单的事情,比如

class ClassicSpam:
    pass

dir(ClassicSpam())

我得到类似的东西:

['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__']

我试图从类和继承的角度理解这是如何工作的。

self[key]是什么使我们内部“知道”的任何履行本合同的电话都会调用object.__getitem__(self, key)

也许这不是正确的方法,我也想“类似java”,但我想了解我缺少什么以及在我实现的类中实现 __getitem__ 时会发生什么。

标签: pythonpython-3.xoopinheritance

解决方案


推荐阅读