›_ebskola.lv
Prog I · 11. tēma · 6 stundas - Python · OOP · klases

Objektorientētā //
programmēšana

Apgūsti Python class, __init__, mantošanu un polimorfismu. Veido RPG turnīra simulatoru ar cīnītāju hierarhiju.

6 stundas class · mantošana Turnīra simulators
# 01 stundu plāns

6 stundas - klases, mantošana un turnīrs

noslēguma projekts
class Cīnītājsatribūti:self.vārdsself.hp = 100metodes:def uzbrukt(self, m)Anna(100)Jānis(100)// class
Python · classOOP pamati

Klases un objekti

class kā blueprint, instance kā konkrēts objekts, atribūti un metodes.

11.1 stundaatvērt ↗
Cīnītājs("Anna", hp=80) def __init__(self, vārds, hp): self.vārds = "Anna" self.hp = 80self = šis konkrētais objekts// __init__
__init__ · selfkonstruktors

Konstruktori un atribūti

__init__ inicializācijas metode, self pašatsauce, instance vs klases atribūti.

11.2 stundaatvērt ↗
anna = Cīnītājs("Anna")anna.uzbrukt(jānis)→ jānis.hp -= 10anna.dziedināt(20)→ self.hp += 20str(anna) → __str__(self)// metodes
metodes · selfmetodes

Metodes un self

Instance metodes, self kā pirmais parametrs, metožu izsaukšana, __str__.

11.3 stundaatvērt ↗
Cīnītājs (bāze)Maģis(Cīnītājs)Karavīrs(Cīnītājs)Archers(Cīnītājs)super().__init__(vārds, hp)// mantošana
mantošana · super()hierarhija

Mantošana un super()

class Maģis(Cīnītājs), super().__init__(), metodes mantošana un paplašināšana.

11.4 stundaatvērt ↗
maģis.uzbrukt(e)kaitē: 20karavīrs.uzbrukt(e)kaitē: 15Polimorfisms: viena metode, dažāds rezultāts__str__ · __repr__ · __eq__ · __len__// polimorfisms
polimorfismsdunder

Polimorfisms un dunder metodes

Metodes override, isinstance(), dunder metodes: __str__, __eq__, __len__.

11.5 stundaatvērt ↗
Anna (Maģis)Jānis (Karavīrs)Kārta 4: Anna uzvar!4 cīnītāji → 2 pusfināli → 1 uzvarētājs$ python turniirs.py
Python · OOPprojekts

Noslēguma projekts: Turnīra simulators

Cīnītāju klašu hierarhija, kaujas simulācija, turnīra kārtu sistēma, rezultātu vizualizācija.

11.6 projektsatvērt ↗
# 02 špikeris

OOP Python špikeris

Klase, mantošana un polimorfisms

class Cīnītājs:
    def __init__(self, vārds: str, hp: int = 100):
        self.vārds = vārds
        self.hp    = hp

    def uzbrukt(self, pretinieks: "Cīnītājs") -> int:
        kaitejums = 10
        pretinieks.hp -= kaitejums
        return kaitejums

    def __str__(self) -> str:
        return f"{self.vārds} (HP: {self.hp})"

class Maģis(Cīnītājs):
    def uzbrukt(self, pretinieks: "Cīnītājs") -> int:
        kaitejums = 20  # polimorfisms - override
        pretinieks.hp -= kaitejums
        return kaitejums

anna  = Maģis("Anna", hp=80)
janis = Cīnītājs("Jānis")
anna.uzbrukt(janis)
print(janis)                        # Jānis (HP: 80)
print(isinstance(anna, Cīnītājs))  # True
$ python turniirs.py # OOP klases simulē RPG cīnītāju turnīru