Am besten wäre ein Beispiel um diese zwei Fragen zu veranschaulichen, danke

1. Was unterscheidet diese beiden voneinander?
<list_iterator object at 0x000001C73...>
<generator object ClassName.__iter__ at 0x000001C73...>
2. iter() und next() können mit ihrer Spezialmethode __iter__() und __next__() "überschrieben" werden. Was ich noch nicht verstehe ist wann muss ich nur __iter__() implementieren und wann muss ich auch noch ein __next__() implementieren?