Vytvorenie vlastnej triedy:
class Maciatko:
def zamnaukaj(self):
print("Mňau!")
V tele triedy môžeme definovať funkcie pomocou kľúčového slova def, len majú prvý parameter self. Všimnime si, že názov triedy začína veľkým písmenom.
Vytvorenie objektu:
murko = Maciatko()
Zavolanie metódy:
murko.zamnaukaj()
Vytvorenie vlastných atribútov:
murko.meno = 'Murko'
Parameter self:
class Maciatko:
def zamnaukaj(self):
print(f"{self.meno}: Mňau!")
murko = Maciatko()
murko.meno = 'Murko'
micka = Maciatko()
micka.meno = 'Micka'
murko.zamnaukaj()
micka.zamnaukaj()
Metóda môže mať po parametri self aj ďalšie púarametre. Pri volaní funkcie parameter self vynechávame - doplní sa vždy automaticky - ale ostatné parametre používame ako normálne parametre pri volaní funkcie. Napríklad v tomto príklade sa do parametru jedlo priradí reťazec ‘ryba’:
class Maciatko:
def zamnaukaj(self):
print(f"{self.meno}: Mňau!")
def zjedz(self, jedlo):
print(f"{self.meno}: Mňau mňau! {jedlo} mi chutí!")
murko = Maciatko()
murko.meno = 'Murko'
murko.zjedz('ryba')
Čo sa stane, ak mačiatku zabudneme vytvoriť meno? Metóda zamňaukaj prestane fungovať.
Aby táto chyba nemóhla nastať, môžeme zariadiť, aby každé mača muselo mať meno hneď ako vznikne. Meno tak bude používateľ zadávať hneď pri vytváraní objektu Maciatko:
murko = Maciatko(meno='Murko')
Toto volanie zatiaľ nefunguje, musíme zmeniť triedu Maciatko.
Použijeme špeciálnu metódu __init__
(dva podčiarkovníky pred a za názvom funkcie). Podčiarkovníkmi označujeme, že táto metóda je špeciálna. Python ju zavolá automaticky, keď vytvára nový objekt.
class Maciatko:
def __init__(self, meno):
self.meno = meno
def zamnaukaj(self):
print(f"{self.meno}: Mňau!")
def zjedz(self, jedlo):
print(f"{self.meno}: Mňau mňau! {jedlo} mi chutí!")
murko = Maciatko('Murko')
murko.zamnaukaj()
Teraz sa už nestane, aby mačiatko nemalo meno, lebo objekt nevieme vytvoriť bez toho, aby sme zadali parameter meno. Metóda zamňaukaj bude teda vždy fungovať.
Meno mačiatka môžeme zadávať ako pozičný argument (python vydedukuje, ku ktorej premennej bude hodnota patriť podľa poradia), alebo ho môžeme pomenovať:
# 'Murko' je hodnota prvégho argumentu pre __init__ (po self)
murko = Maciatko('Murko')
# 'Micka' je hodnota argumentu 'meno'
micka = Maciatko(meno='Micka')