Python 迭代自我是一种糟糕的做法吗?
我知道上面的“我在自己身上做什么”是多余的,但我想知道“我在自己身上做什么”是否被认为是一种不好的做法。如果这是一个糟糕的实践,并且我需要从同一个类中的另一个方法对self进行循环,那么我将如何实现它 没有。为什么会这样?定义Python 迭代自我是一种糟糕的做法吗?,python,loops,iterator,Python,Loops,Iterator,我知道上面的“我在自己身上做什么”是多余的,但我想知道“我在自己身上做什么”是否被认为是一种不好的做法。如果这是一个糟糕的实践,并且我需要从同一个类中的另一个方法对self进行循环,那么我将如何实现它 没有。为什么会这样?定义\uuuu iter\uuuu的原因是为了在对象上迭代。我认为,当它已经存在时,重新实现它是一种不好的做法 以下是您描述的在(OrderedDict)中使用的行为示例 不,为什么会这样?定义\uuuu iter\uuuu的原因是为了在对象上迭代。我认为,当它已经存在时,重新
\uuuu iter\uuuu
的原因是为了在对象上迭代。我认为,当它已经存在时,重新实现它是一种不好的做法
以下是您描述的在(OrderedDict
)中使用的行为示例
不,为什么会这样?定义
\uuuu iter\uuuu
的原因是为了在对象上迭代。我认为,当它已经存在时,重新实现它是一种不好的做法
以下是您描述的在(OrderedDict
)中使用的行为示例
\uuuu iter\uuuu
中的循环将引发值错误:没有足够的参数来解包。除非你在self.data.items()中对k,v说,否则在self.data.items()中循环self.data只会给你钥匙。
我的错,我的意思是对于key,val对于self.data.items()
。中的循环会产生值错误:没有足够的参数来解压。循环使用self.data
将只提供键,除非您在self.data.items()中对k,v说,
我的错,我的意思是在self.data.items()中对key,val说。
class Data:
def __init__(self, dictionary):
self.data = dictionary
def __iter__(self):
for key,val in self.data.items():
yield (key, val)
def iter_on_self(self):
for i in self:
yield i
def __reduce__(self):
'Return state information for pickling'
items = [[k, self[k]] for k in self]
tmp = self.__map, self.__root
del self.__map, self.__root
inst_dict = vars(self).copy()
self.__map, self.__root = tmp
if inst_dict:
return (self.__class__, (items,), inst_dict)
return self.__class__, (items,)