我有一个名为Point
的Python类,它基本上是一个x
和{Point
查找距离、角度等的功能。在
为了将一个点传递给其他可能需要x
和y
分开的函数,我希望能够使用*
运算符将我的Point
解包为单独的x
,y
值。在
我发现,如果我重写__getitem__
并为超过1的任何索引引发一个StopIterationException
,其中{y
到1,这是可能的。在
然而,当ValueError
/KeyError
更适合于大于1的值时,引发StopIteration
似乎不合适。在
有人知道为自定义类实现*
运算符的正确方法吗?优选地,不通过StopIteration
到{StopIteration
?在
您可以通过重写
__iter__
魔术方法实现相同的功能,如下所示输出
^{pr2}$下面是另一种方法,它使用
__dict__
,但可以精确控制顺序,而不必对每次访问的键执行排序:当然,您可以将已排序的元组、列表或键串存储在某个地方,但我认为在这里使用文本是有意义的。在
在这里,有一种方法可以实现setter和getter方法。在
^{pr2}$相关问题 更多 >
编程相关推荐