[python] Třídy, metody, argumenty

2014-02-21 Tema obsahu Marcus Scalpere

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/://
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz

Re: [python] Třídy, metody, argumenty

2014-02-21 Tema obsahu Petr Viktorin
2014-02-21 18:52 GMT+01:00 Marcus Scalpere xdlabac...@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())
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz