Fluent Python 1Python 数据模型

本文介绍了Python数据模型中的__len__和__getitem__方法,详细阐述了它们在序列类型和映射类型中的作用,以及如何实现这两个方法使自定义类支持len()函数和索引操作。同时提到了__repr__和__str__方法在对象表示上的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

1.1 __getitem__ 和  __len__

1.2 __repr__ 和 __str__

1.3 特殊方法一览


通过实现特殊方法,自定义数据类型可以表现得跟内置类型一样,从而让我们写出更具表达力的代码—— 或者说,更具 Python 风格的代码。

1.1 __getitem__ 和  __len__

object.__getitem__(selfkey)

调用此方法以实现 self[key] 的求值。对于序列类型,接受的键应为整数和切片对象。请注意负数索引(如果类想要模拟序列类型)的特殊解读是取决于 __getitem__() 方法。

如果 key 的类型不正确则会引发 TypeError 异常;如果为序列索引集范围以外的值(在进行任何负数索引的特殊解读之后)则应引发 IndexError 异常。对于映射类型,如果 key 找不到(不在容器中)则应引发 KeyError 异常。

object.__len__(self)

调用此方法以实现内置函数 len()。应该返回对象的长度,以一个 >= 0 的整数表示。此外,如果一个对象未定义 __bool__() 方法而其 __len__() 方法返回值为零,则在布尔运算中会被视为假值。

CPython implementation detail: 在 CPython 中,要求长

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值