【发布时间】:2017-09-10 21:02:28
【问题描述】:
使用 collections.namedtuple 可以创建 Point = namedtuple('Point', 'x y') 并设置 p = Point(2,3),然后使用 x, y = p 解压缩 p。
类可以做类似的事情吗?例如
class Point:
def __init__(self,x ,y):
self.x = x
self.y = y
p = Point(2,3)
x,y = p
print(f"x: {x}, y: {y}")
>>> x: 2, y: 3
这当然会导致错误,但是如何获得namedtuple的效果呢?
【问题讨论】:
-
tl;dr:实现
__iter__ -
你可以,但在大多数情况下,与类有关是一件奇怪的事情。元组是不可变的,因此命名键和索引之间的映射也是不可变的。类通常不提供相同的保证。
标签: python-3.x class