[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