obiekt.setX(10)
obiekt.getX()
Jednak :) Python umożliwia Ci używanie obiektu tak jakby był publiczny:
obiekt.x = 10
obiekt.x
dopisując do nich funkcje, wywoływane w trakcie przypisywania wartości lub odwoływania się do niej. Wszystko dzięki strukturze property.
Stwórzmy więc naszą klasę :) chowając w niej prawdziwe zmienne.
class Klasa(object):
def __init__(self):
self.__x = None
def getx(self):
return self.__x
def setx(self, value):
self.__x = value
def delx(self):
del self.__x
x = property(getx, setx, delx, "I'm the 'x' property.")
Cała "sztuczka" opiera się na końcowym stworzeniu atrybutu klasy "x" i przypisania do niego stworzonego gettera, settera, "delletera" oraz docstringa - opisu zmiennej. Od teraz możemy korzystać z "x" tak jakby był to atrybut klasy faktycznie jednak wywoływały się będą stworzone przez nas funkcje :)
obiekt = Klasa()
obiekt.x = 10 # Wywoła się tak naprawdę setx(10) self.__x = 10
print obiekt.x # Wywoła się tak naprawdę getx() return self.__x
del obiekt.x # Wywoła się tak naprawdę delx() del self.__x