python - __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__ 时会发生什么。
解决方案
推荐阅读
- python - Return the index of selected test set Python
- asp.net-core-mvc - How to understand .netcore add scoped
- python - 数据采集和绘图在单独的线程中
- javascript - 如何将数组中的特定元素合并在一起?
- php - Laravel Nova 未按记录显示 userTimezone
- reactjs - 样式化组件需要什么严格类型?
- java - 关于 SQL Server jdbc 的字符串长度限制?
- python - 如何与python TCP协议进行外部交互
- javascript - 如何更改倒计时的显示?
- javascript - 如何在 Slick Slider 的第一张幻灯片中制作一行,在所有其他幻灯片中制作两行?