Jako embedded vývojář si začínám hrát s Pythonem, aktuálně jsem se pustil do iterátorů, generátorů, tříd atd. Přitom jsem narazil na jednu, pro mě nevysvětlitelnou věc, týkající se funkce __next__ v třídě.
Mám kód: 
class Hafani(object):
    def __init__(self):
        self.__psi = ("Kokrspanel", "Jezevcik", "Ovcak", "Kolie", "Husky")
    def __iter__(self):
        self.__index = 0
        return self
    def __next__(self):
        pes = self.__psi[self.__index]
        self.__index += 1
        if self.__index >= len(self.__psi):
            raise StopIteration
        else:
            return pes
# Example of use
stekac = Hafani()
for p in stekac:
    print(p, end = "  ")
Pokud ho spustím, vypíší se mi všechny plemena psů kromě posledního, i když bych očekával celý komplet včetně "Husky". Asi jsem slepý, ale stále nemohu přijít na to, proč to funguje zrovna takto. Poradil by někdo zkušenější? 
Děkuji moc.