Jaki jest sens stosowania getterów i setterów w Pythonie? Np. w Javie jak mam gettera i settera to nie mogę później wprost przypisać albo odczytać jakiegoś pola klasy, jest to możliwe tylko przez settera i gettera. A w Pythonie czy mam gettery i settery, czy nie mam getterów i setterów to nic to nie zmienia. Ktoś może mi to wytłumaczyć?
class Human():
counter = 0
@staticmethod
def status():
print "Total amount of humans: %s" % Human.counter
def __init__(self, name):
self.__name = name
Human.counter += 1
@property
def name(self):
return self.__name
@name.setter
def name(self, new_name):
self.__name = new_name
a = Human("Jack")
a.name = "George" #dziala, a powinno dzialac tylko a.name("George")
Human.status()
print a.name #dziala, a powinno dzialac tylko a.name()
setter
skoro i tak istnieje bezpośredni dostęp do pola prywatnego. Zatem użyszkodnik i tak może przypisać 0 doDenominatora
.__zmienna
ma utrudniać dostępy do pól. Niemniej to nadal półśrodek, a nie racjonalne rozwiązanie.chyba
, przypuszczam, że autor o co innego spytał, a co innego go dręczy.