[python] Třídy, metody, argumenty
starenka .
starenka0 na gmail.com
Pátek Únor 21 20:42:33 CET 2014
s tema argumentama u funkci se muzes obecne dost vyblbnout... (vizuj
http://docs.python.org/2/tutorial/controlflow.html#more-on-defining-functions)
napr.
starenka /tmp % cat meh.py
#!/usr/bin/env python
# coding=utf-8
def nejaka(prvni, druhej, treti):
print prvni, druhej, treti
def dalsi(prvni, *args):
print prvni, args
def este_jina(**kwargs):
print kwargs
def vrat_tri():
return 1, 2, 3
def vrat_dict():
return dict(prvni=1, druhej=2, treti=3)
nejaka(*vrat_tri())
nejaka(*sorted(vrat_dict().values()))
nejaka(**vrat_dict())
dalsi(*vrat_tri())
este_jina(**vrat_dict())
starenka /tmp % python meh.py
1 2 3
1 2 3
1 2 3
1 (2, 3)
{'druhej': 2, 'prvni': 1, 'treti': 3}
mej se
s.
---
In Perl you shoot yourself in the foot, but nobody can understand how
you did it. Six months later, neither can you. | print
'aknerats'[::-1]
2014-02-21 20:25 GMT+01:00 Marcus Scalpere <xdlabacekm at seznam.cz>:
> Dne 21.2.2014 19:30, Petr Viktorin napsal(a):
>
>> 2014-02-21 18:52 GMT+01:00 Marcus Scalpere <xdlabacekm at 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 at py.cz
>> http://www.py.cz/mailman/listinfo/python
>>
>> Visit: http://www.py.cz
>>
> No jasně, čekal jsem, že to bude jen nějaká drobnost. Hned se cítím o něco
> dospělejší. Vše funguje jak má, děkuji mnohokráte!
>
> _______________________________________________
> Python mailing list
> python at py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
Další informace o konferenci Python