[python] pspad kompilace
superman
feed na centrum.cz
Sobota Červen 21 09:55:46 CEST 2008
Děkuji náčelníku, že jsi se mě zastal :-) Já osobně si myslím, že
get/set metody v Pythonu je absolutní pitomost, a že to tak krásný a
schopný jazyk, jakým Python je opravdu nemá zapotřebí. Nevidím jedinou
výhodu používání get/set metod v Pythonu - ani jedinou, kromě toho že
"správný Javista bude psát v každém jazyce jako v Javě" (parodie na
"Fortranista bude psát v každém jazyce jako ve Fortranu"). Osobně si
myslím, že get/set metody je "javovina", kde v Javě je bohužel nutné
díky strašné neschopnosti syntaxe Javy používat lecjakou obezličku, ale
je to z nouze ctnost.
Miloslav Ponkrác
rajcze napsal(a):
> Pokud mluvime o Pythonu, tak v něm je pozdější přepisování zdrojáků na
> gettery/settery přece ůplně jednoduché.
>
> Pokud se třeba v příkladu s opičkou z nějakého děsivého důvodu
> rozhodnu, že chci atribut nick změnit na slovník, který obsahuje dva
> prvky - jméno a příjmení.
>
> Stačí změnit atribut na property například takto:
>
> Výchozí stav:
>
> class Opicka:
> def __init__(self):
> self._nick = ""
>
> def magic_function(self):
> self.nick = self.nick.upper()
>
> Konečný stav:
>
> class Opicka:
> def __init__(self):
> self._nick = {"jmeno":"", "prijmeni":""}
>
> def magic_function(self):
> self.nick = self.nick.upper()
>
> def set_nick(self, value):
> value = value.split()
> self._nick["jmeno"] = self._nick["prijmeni"] = ""
> if len(value) == 1:
> self._nick["jmeno"] = value[0]
> else:
> self._nick["jmeno"] = value[0]
> self._nick["prijmeni"] = ' '.join(value[1:])
>
> def get_nick(self):
> return("%s %s" % (self._nick['jmeno'], self._nick["prijmeni"]))
>
> nick = property(get_nick, set_nick)
>
> a = Opicka()
> a.nick = "Pepa z Depa"
> a.nick = a.nick + " prvni"
> print a.nick
> a.magic_function()
> print a.nick
>
>
> Je mi jasné, že tento příklad je docela nerealistický, ale pro
> demonstraci funkcionality IMHO vyhovuje.
>
> Joza
>
>
> 2008/6/21 Jan Bednařík <jan.bednarik na gmail.com>:
>
>> Souhlasím, v tomto případě jsou ty metody zbytečné. Ale v praxi často mají
>> nějakou funkčnost navíc, jako třeba ověření/ošetření vstupních hodnot,
>> přeformátování výstupních hodnot, vliv na další atributy třídy, logování,
>> apod. To se bez set/get metod neobejde a když se nepoužívají už z principu i
>> pro to jednoduché přiřazení nebo navrácení hodnoty atributu, pozdější
>> přepisování zdrojáků není zrovna nejzábavnější.
>>
>> Honza
>>
>> _______________________________________________
>> Python mailing list
>> Python na py.cz
>> http://www.py.cz/mailman/listinfo/python
>>
>>
>
>
>
>
Další informace o konferenci Python