[python] Třídy, metody, argumenty

Petr Viktorin encukou na gmail.com
Pátek Únor 21 19:30:07 CET 2014


2014-02-21 18:52 GMT+01:00 Marcus Scalpere <xdlabacekm na seznam.cz>:
> Zdravím,
> můj dotaz je lepší asi předvést než vysvětlovat, takže:
>
> class pokus:
>     def __init__(self, vstup):
>         self.vstup = vstup
>
>     def nejaka_funkce(self):
>         return (self.rok + 9) % 28
>
>     def jina_funkce():
>         return ((self.nejaka_funkce - 1) * 11) % 30
>
> prvni = pokus(1845)
> print (prvni.jina_funkce())
>
> (Jen příklad, skutečnost je trochu složitější, ale i kdyby nebyla, chci na
> to přijít)
> Je jasný, že mi to vyhodí chybu, poskytuji argument a přitom žádný
> nepotřebuje. Takže moje otázka je - jak to provést, abych mohl ve třídě
> používat metody, které mají jako argument výsledek jiné funkce ve třídě? A
> zároveň abych neměl problém při volání? Je mi jasný, že to určitě nějak
> jde...a omluvte mě, na OOP stále koukám jak pavián na Rosettskou desku:/

Je to celkem jednoduché: metody definuješ se "self", ale voláš bez
"self" (ten se doplní sám, z objektu na kterém tu metodu voláš):

class pokus:
    def __init__(self, rok):
        self.rok = rok

    def nejaka_funkce(self):
        return (self.rok + 9) % 28

    def jina_funkce(self):
        return ((self.nejaka_funkce() - 1) * 11) % 30

prvni = pokus(1845)
print (prvni.jina_funkce())


Další informace o konferenci Python