rage / ohjelmointi-21

https://ohjelmointi-21.mooc.fi
0 stars 17 forks source link

Osa 10.2 Esimeriksissä mahdollinen kirjoitusvirhe #99

Open stgpepper opened 3 years ago

stgpepper commented 3 years ago

Tässä koko esimerikki:

class Henkilo:
    def __init__(self, nimi: str):
        self._nimi = self._isot_alkukirjaimet(nimi)

    def _isot_alkukirjaimet(self, nimi):
        nimi_isoilla = []
        for n in nimi.split(" "):
            nimi_isoilla.append(n.capitalize())

        return " ".join(nimi_isoilla)

    def __repr__(self):
        return self.__nimi

class Jalkapalloilija(Henkilo):

    def __init__(self, nimi: str, lempinimi: str, pelipaikka: str):
        super().__init__(nimi)
        # metodia voi kutsua, koska se on suojattu yliluokassa
        self.__lempinimi = self._isot_alkukirjaimet(lempinimi)
        self.__pelipaikka = pelipaikka

    def __repr__(self):
        r =  f"Jalkapalloilija - nimi:{self._nimi}, lempinimi: {self.__lempinimi}"
        r += f", pelipaikka: {self.__pelipaikka}"
        return r

# Testataan
if __name__ == "__main__":
    jp = Jalkapalloilija("petri pythonen", "pyttis", "hyökkääjä")
    print(jp)

Rivi: return self.__nimi pitäisi olla varmaankin: return self._nimi. Periaatteessa tämä ei suoritettaessa tule ilmi, kun tuota riviä ei esimerkissä kutsuta, mutta on siinä mielessä omiaan johtamaan harhaan, kun esimerkki käsittelee juuri näkyvyymääreitä.