Ahoj, vec se ma tak, ze pokud pouzivas get/set metody explicitne, tak delas praci uplne zbytecnou.
Jednoduchy priklad: # Trida class C(object): def __init__(self): self.x = 0 def magic(self): self.x = self.x * 10 # Program pom = C() pom.x = 11 print pom.x pom.magic() print pom.x Vse je OK, ale z nejakeho obskurniho duvodu je najednou do x potreba ukladat dvojnasobek kladnych prirazovanych hodnot, misto zaporneho cisla nulu. Neni nic jednodussiho, nez zmenit atribut x na property x. Property v pythonu funguje tak, ze vytvorene property nadefinujes, jaka funkce se vola pri "pristupu k property pro cteni (getter)" a pri "pristupu k property pro zapis (setter)" class C(object): def __init__(self): self._x = 0; def magic(self): self.x = self.x * 10 def get_x(self): return(self._x) def set_x(self, value): if value >= 0: self._x = value * 2 else: self._x = 0 x = property(get_x, set_x) Nyni muzu bezproblemu provest puvodni program # Program pom = C() pom.x = 11 print pom.x pom.magic() print pom.x a mam i pozadovane chovani. Vsimni si, ze pozadovana zmena chovani se projevila i ve funkci C.magic() ktera k property x taktez pristupuje. Pokud by ses tomuto chtel vyhnout, tak staci zmenit self.x na self._x Cili tim ze explicitne volas get_x a set_x tak sice nedelas chybu, ale delas zbytecnou praci a navic to vypada desne. Joza 2008/6/21 David Michal <[EMAIL PROTECTED]>: > 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. -- Rules of Optimization: Rule 1: Don't do it. Rule 2 (for experts only): Don't do it yet. _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python