Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 4. diel - Hracia kocka v Pythone - Zapuzdrenie a konštruktor

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
jan.kubes07
Tvůrce
Avatar
jan.kubes07:20.10.2020 13:40

Ahoj, mám problém s timhle kodem:
class Kostka:
"""
Třída reprezentuje hrací kostku.
"""

def __init__(self, pocet_sten=6):
self._pocet_sten = pocet_sten

def vrat_pocet_sten(sel­f):
return self._pocet_sten

def hod(self):
"""
Vykoná hod kostkou a vrátí číslo od 1 do
počtu stěn.
"""
import random as _random
return _random.randint(1, self.__pocet_sten)

def _str_(self):
"""
Vraci textovy pocet sten.
"""
return str("Kostka ma {0} sten.".format(sel­f._pocet_sten))
# vytvoření kostek
sestistenna = Kostka()
desetistenna = Kostka(10)

#hod šestistěnnou
print(sestistenna)
for _ in range(10):
print(sestisten­na.hod(), end=" ")

input()

Vyhodí to chybu:
Traceback (most recent call last):
File "C:\Users\Hon­za\Documents\ko­dy\Python\Are­na.py", line 32, in <module>
print(sestisten­na.hod(), end=" ")
File "C:\Users\Hon­za\Documents\ko­dy\Python\Are­na.py", line 18, in hod
return _random.randint(1, self.__pocet_sten)
AttributeError: 'Kostka' object has no attribute '_Kostka__pocet_sten'

Děkuju.

Avatar
jan.kubes07
Tvůrce
Avatar
Odpovedá na jan.kubes07
jan.kubes07:20.10.2020 13:41

Sorry, zapomněl jsem to dat do zdrojového kódu ...

Avatar
jan.kubes07
Tvůrce
Avatar
jan.kubes07:23.10.2020 16:22

Tak jeste jednou:

class Kostka:
        """
        Třída reprezentuje hrací kostku.
        """

        def __init__(self, pocet_sten=6):
                self._pocet_sten = pocet_sten

        def vrat_pocet_sten(self):
                return self._pocet_sten

        def hod(self):
                """
                Vykoná hod kostkou a vrátí číslo od 1 do
                počtu stěn.
                """
                import random as _random
                return _random.randint(1, self.__pocet_sten)

        def _str_(self):
                """
                Vraci textovy pocet sten.
                """
                return str("Kostka ma {0} sten.".format(self._pocet_sten))
# vytvoření kostek
sestistenna = Kostka()
desetistenna = Kostka(10)

#hod šestistěnnou
print(sestistenna)
for _ in range(10):
print(sestistenna.hod(), end=" ")

input()
Avatar
Petr Hubacek
Člen
Avatar
Petr Hubacek:25.1.2021 10:16

Ahoj,
nemá být místo:

#hod šestistěnnou
print(sestistenna)

toto?

#hod šestistěnnou
print(sestistenna.vrat_pocet_sten())
Avatar
Petr Hubacek
Člen
Avatar
Petr Hubacek:25.1.2021 10:22

Už jasný. Neměl jsem v class "def __str__(self):"

Avatar
Odpovedá na Marty
Vojtěch Perník:28.8.2021 14:43

Já to taky pořád nemůžu pochopit. Pravděpodobně je to asi zažitá konvence Pythonu.

Avatar
Odpovedá na jan.kubes07
Adam Čermák:14.2.2022 17:27

'Kostka' object has no attribute '_Kostka__pocet_sten­... Zde máš dvě podtržítka. V ostatních metodách výše máš definováno pouze s jedním podtržítkem.

Avatar
Milan
Člen
Avatar
Milan:1.7.2022 21:06

Konstruktory 2. odstavec "Metodu konstruktoru budeme mí prázdnou." chybi t ... jinak ok lekce :).

Avatar
Martin Truhlář:24.8.2022 17:39

Posílám svůj kód!

class Kostka:
    def __init__(self, pocet_sten):
        self.pocet_sten  = pocet_sten

    def hod(self):
        import random as _random
        return _random.randint(1, self.pocet_sten)

    def vypis(self):
        print("Kostka s " + str(self.pocet_sten) + " stěnami")
        print("A její náhodné čísla jsou:")
        for _ in range(self.pocet_sten):
            print(kostka.hod(), end=" ")

kostka = Kostka(10)
kostka.vypis()
Avatar
Martin Truhlář:24.8.2022 18:36

Pardon, doplněno o šestku a desítku :) !

class Kostka:
    def __init__(self, pocet_sten):
        self.pocet_sten  = pocet_sten

    def hod(self):
        import random as _random
        return _random.randint(1, self.pocet_sten)

    def vypis(self):
        print("\n\nKostka s " + str(self.pocet_sten) + " stěnami")
        print("A její náhodné čísla jsou:")
        for _ in range(self.pocet_sten):
            print(kostka6.hod(), end=" ")
            print(kostka10.hod(), end=" ")

kostka6 = Kostka(6)
kostka10 = Kostka(10)
kostka6.vypis()
kostka10.vypis()
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 95.