@day.setter
def day(self, day):
assert 1 <= day <= 31
self._day = day
d = Date(2)
d = Date(42)
Avec un code comme ça pas d'erreur possible. Si quelqu'un modifie _day depuis l'extérieur de la classe et que son code pête il n'a que ce qu'il mérite.
NB j'utilise la syntaxe 2.6 mais il en existe une compatible de 2.2 à 2.6
[^] # Re: Encapsulation
Posté par Jean B . En réponse au journal Journal inutile : Python c'est complêtement pourri, j'ai un exemple. Évalué à 1.
en python ça donne:
class Date(object):
def __init__(self, day):
self.day = day
@property
def day(self):
return self._day
@day.setter
def day(self, day):
assert 1 <= day <= 31
self._day = day
d = Date(2)
d = Date(42)
Avec un code comme ça pas d'erreur possible. Si quelqu'un modifie _day depuis l'extérieur de la classe et que son code pête il n'a que ce qu'il mérite.
NB j'utilise la syntaxe 2.6 mais il en existe une compatible de 2.2 à 2.6