发布于2026-07-10 阅读(0)
扫一扫,手机访问

__iter__ 是最通用的做法class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __iter__(self):
yield self.x
yield self.y
__iter__ 里返回 self(除非你同时实现了 __next__)__getitem__ 回退路径__iter__ 比 __getitem__ 更清晰,因为语义明确就是“可展开”__getitem__ 也能凑效,但有隐含限制0 开始连续索引,不能跳(比如只实现 __getitem__(0) 和 __getitem__(2) 会失败)KeyError 而非 IndexError,解构直接崩溃for 循环或 list(obj) —— 容易造成行为不一致class BadPoint:
def __init__(self, x, y):
self.data = [x, y]
def __getitem__(self, i):
return self.data[i] # 自动触发 IndexError 超界
__iter__ 必须返回迭代器对象,不能直接 return (x, y)(那是元组,不是迭代器)tuple,但会失去自定义属性和方法——得权衡dataclasses + __iter__ 是兼顾简洁与功能的常见组合
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8