Tavs šīs stundas izaicinājums: Saprast, kas ir klase, objekts un kā tās atšķiras no vienkāršām vārdnīcām.
Klase ir veidne (kā cepuma forma), no kuras var izveidot daudzus objektus (cepumus). Katrs objekts ir patstāvīgs un var saturēt dažādas vērtības, bet visiem ir vienāda struktūra un metodes.
class Suns:
"""Suņa klase."""
pass # tukša klase — tikai pamatstruktūra
# Objektu izveide
rex = Suns()
mufa = Suns()
print(type(rex)) # <class '__main__.Suns'>
print(rex is mufa) # False — divi atšķirīgi objekti
Kāpēc izvēlēties klasi pār vārdnīcu? Klases nodrošina:
Definē tukšu klasi un izveido tās objektus.
klases.py.Speletajs ar pass ķermenī.p1 = Speletajs() un p2 = Speletajs().p1.vards = "Anna", p1.hp = 100.Pievieno klases atribūtus, kas kopīgi visiem objektiem.
Speletajs pievieno klases līmenī: maks_hp = 100 un komanda = "sarkanā".komanda — visiem vienāds.Speletajs.maks_hp = 200.maks_hp).Salīdzini klašu un vārdnīcu pieeju.
izveidot_speletaju_dict(vards, hp), kas atgriež vārdnīcu.cizt(speletajs, bojajums) — vai tā strādā ar abām formām?Pievieno klasei nestandarta tekstuālo reprezentāciju.
Speletajs pievieno: def __repr__(self): return f"<Speletajs {self.vards}>"print(p1) un print([p1, p2]).self: Klašu metodes vienmēr saņem self kā pirmo parametru.p1.maks_hp = 200 izveido OBJEKTA atribūtu, nevis maina klases atribūtu.Speletajs, nevis speletajs).class Speletajs:
"""Vienkāršs spēlētāja modelis."""
maks_hp = 100 # klases atribūts
speletajs1 = Speletajs()
speletajs1.vards = "Anna"
speletajs1.hp = 100
speletajs2 = Speletajs()
speletajs2.vards = "Jānis"
speletajs2.hp = 80
print(f"{speletajs1.vards}: {speletajs1.hp}/{Speletajs.maks_hp}")
print(f"{speletajs2.vards}: {speletajs2.hp}/{Speletajs.maks_hp}")