我将提供所讨论问题的示例,以防标题不够清楚。
假设我有一个代表二维坐标的 class Point(object)。 是否可以创建一个允许以下操作的“魔术”方法?
x, y = point
也许对迭代器进行了一些修改?
请您参考如下方法:
您可以简单地利用对象的迭代器协议(protocol)并完成此操作
class Point(object):
def __init__(self, x,y):
self.x = x
self.y = y
self.points = (x,y)
def __iter__(self):
return iter(self.points)
p = Point(1,5)
x,y = p
print x,y
# 1,5
看看http://www.rafekettler.com/magicmethods.html#sequence有关如何将自定义对象转换为可迭代对象的更多信息;或者更准确地说,人们将如何使用像可迭代对象这样的对象。
