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ä.
Tässä koko esimerikki:
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ä.