Rozdział 14 · Tworzenie rzeczywistych obiektów

Mini-projekt: Player

Model Gracza z punktami zdrowia i wynikiem to pierwsza niezależna klasa rozdziału.

Mini-projekt: Player

Zbierzmy wszystko z sekcji 14.1-14.8 w jedną prawdziwą klasę, Model Gracza z Punktami Zdrowie i liczenie:

player.py
class Player:
    def __init__(self, name, health=100):
        self.name = name
        self.health = health
        self.score = 0

    def take_damage(self, amount):
        self.health -= amount
        if self.health < 0:
            self.health = 0

    def heal(self, amount):
        self.health += amount
        if self.health > 100:
            self.health = 100

    def add_score(self, points):
        self.score += points
Playernamehealthscoretake_damage(amount)heal(amount)add_score(points)
Klasa Player
dva_igroka.py
anna = Player("Anna")
bob = Player("Bob")
anna.take_damage(30)
anna.add_score(10)

print(anna.health, anna.score)   # 70 10
print(bob.health, bob.score)     # 100 0 — bob nie ucierpiał
anna : Playername = 'Anna'health = 70score = 10
anna — Twój stan
bob : Playername = 'Bob'health = 100score = 0
bob - Nie wpływają na działania anna
Debug Lab 4: == porównuje nie wartości, lecz same obiekty
sravnenie_igrokov.py
a1 = Player("Anna")
a2 = Player("Anna")   # to samo imię, zdrowie i wynik co a1

print(a1 == a2)
>>> print(a1 == a2)
False
Co widać na ekranie

Chociaż a1 oraz a2 tych samych wartości WSZYSTKICH atrybutów, == domyślnie porównuje obiekty przez tożsamość — to dwa RÓŻNE obiekty w pamięci, dlatego wynik Falsenawet jeśli zawartość całkowicie się zgadza. To == porównywanych wartościach klasa wymaga specjalnej metody __eq__ — do tego przejdziemy w sekcji 14.21.

Poprawiony kod
sravnenie_cherez_pole.py
# Na razie porównujemy potrzebne pola ręcznie:
print(a1.name == a2.name and a1.health == a2.health)
★★ Zadanie samodzielne
is_alive

Dodaj metodę is_alive(self) do klasy Player, która zwraca True, jeśli health jest większa niż 0, a False w przeciwnym razie.

Praktyka: Klasa Player
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →