Python模拟容器类型文档中object.__len__前缀的含义疑问
关于Python文档中
object.__len__前缀的解释 文档里的object.__len__、object.__getitem__这种写法,只是Python官方文档的统一标记规范,核心意思是:
- 这是Python对象模型定义的标准特殊方法,所有新式类(默认继承
object的类)都可以通过实现这个方法,来对接Python的内置操作(比如len()函数、下标访问)。 - 它并不是要求你把
__len__定义在object类本身,而是告诉你:如果你想让自己的类(比如你写的EmuList)支持对应的内置操作,就需要在自己的类里实现一个签名匹配的方法。
举个具体的例子:
- 文档写
object.__len__(self),是在说明:只要你的类定义了一个接受self参数的__len__方法,Python解释器就会把len(你的实例)的调用,转发到这个方法上。 - 你写的
EmuList类里的__len__,其实是重写了object类的同名方法(object本身的__len__会抛出TypeError,必须子类自己实现才有实际功能),这完全符合文档的要求。
简单说,object.前缀只是在告诉你:这个方法属于Python所有对象共同遵循的底层接口规范,而不是让你去修改object类。
内容的提问来源于stack exchange,提问作者IcyBrk
相关产品推荐
相关产品推荐

