gpt4 book ai didi

python - 为自定义类正确实现 Python Star 运算符

转载 作者:太空狗 更新时间:2023-10-30 02:45:00 25 4
gpt4 key购买 nike

我有一个名为 Point 的 Python 类,它基本上是一个 xy 值的容器,具有用于查找距离的附加功能,角度,以及另一个 Point

为了将一个点传递给可能需要 xy 分开的其他函数,我希望能够使用 * 运算符将我的 Point 解压缩为单独的 xy 值。

我发现如果我覆盖 __getitem__ 并为任何超过 1 的索引引发 StopIterationException 并且 x 对应于 0,这是可能的和 y 到 1。

然而,当 ValueError/KeyError 更适合超过 1 的值时,引发 StopIteration 似乎并不合适。

有谁知道为自定义类实现 * 运算符的正确方法吗?最好是一种不通过 __getitem__ 引发 StopIteration 的方法?

最佳答案

你可以通过覆盖 __iter__ 魔术方法来实现相同的功能,就像这样

class Point(object):
def __init__(self, x, y):
self.x, self.y = x, y

def __iter__(self):
return (self.__dict__[item] for item in sorted(self.__dict__))

def printer(x, y):
print x, y

printer(*Point(2, 3))

输出

2 3

关于python - 为自定义类正确实现 Python Star 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26293751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com