【发布时间】:2017-02-01 20:04:09
【问题描述】:
我正在编写双向链表的实现。为了遍历列表,我使用了类似的东西:
class Node:
""" A node in our linked list """
def __init__(self, value: Any, next: Union['Node', None] =None,
previous: Union['Node', None] =None) -> None:
self.value = value
self.next = next
self.previous = previous
...
def __next__(self, direction: int =1) -> Union['Node', None]:
if direction == 1:
return self.get_next()
else:
return self.get_previous()
...
其中get_next 和get_previous 只是self.next 和self.previous 的吸气剂。
但是,PyCharm 对我大喊大叫,因为我试图将 next 称为
next(some_node, direction=-1)。这样做的正确方法是什么?
【问题讨论】:
-
你不能随便给魔法方法添加任意参数,你需要匹配数据模型定义。如果你想以另一种方式提供迭代器,那就是
__reversed__。
标签: python python-3.x iterator