Нет.С чего бы это?Причина, по которой вы определяете __iter__
, заключается в том, что вы можете перебирать свой объект.Я бы сказал, что это плохая практика - переопределять его, когда он уже есть.
Вот пример описанного вами поведения при использовании в стандартной библиотеке Python-объекта (OrderedDict
).
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,)