[python] Getters and Setters.
    Filip Štědronský 
    regnarg na seznam.cz
       
    Sobota Červen 21 14:46:22 CEST 2008
    
    
  
On So, čen 21, 2008 at 01:09:04 +0200, David Michal wrote:
> Asi je to jen mou neznalosti, ale preci kdyz budu dusledne pouzivat get
> a set metody, tak si pri pripadne zmene atributu ulehcim praci, jelikoz
> takova zmena bude znamenat editaci pouze samotne tridy a nebudu muset
> prochazet cely kod a hledat kde vsude se na tridu odvolavam.
Gettery a settery jsou hezká věc, ale nikdy, NIKDY, ne,
když jsou používány explicitně. Volat obj.set_size(12)
je prostě zavrženíhodná ohavnost. Python je hlavně o
přehlednosi, čitelnosti a smysluplnosti kódu, takže
samozřejmě nabízí lepší řešení.
class Test(object):
    def _set_a(self,val):
        print "Value changed"
        self._a=val
    def _get_a(self):
        return self._a-1
    a=property(_get_a, _set_a)
    
A pak se normálně používá print t.a, t.a=5, etc. Zcela
přirozeně, jasně a bez chaosu — o volání getterů/setterů
se stará Python. Z toho je zcela jasné, proč je možné
rozhodnutí kdykloliv změnit, navenek se bude vše chovat
stále stejně.
Další hloupostí je používat gettery/settery, které jen
čtou/nastavují proměnnou. Někdo si myslí — hurá, mám
settery, mám správné zapouzdření, jsem OOOOP guru, ale
program tím ničím lepší není. Jen se přidává overhead
voláním zbytečných metod.
S pozdarvem
regnarg
-- 
regnarg --- http://rg.pretel.cz -- JID: regnarg na jabber.cz
V péči o štěstí druhých nacházíme své vlastní.   --Platón
Přátelství může trvat jedině mezi dobrými lidmi. --Cicero
    
    
Další informace o konferenci Python