Il n'y a pas d'accesseur par défaut, rien ne permet de dire que self.commercant (la property) doit renvoyer self._commercant (une variable classique), donc c'est à toi de le faire (better explicit ...). C'est pour ca aussi que tu ne risque pas de boucle infinie, quand tu set self._commercant ça n'appelle pas la property.
Et au passage autant utiliser la syntaxe avec les décorateurs, c'est fait pour :
classingredient():def__init__(self):self._commercant=""@propertydefcommercant(self):returnself._commercant@commercant.setterdefcommercant(self,nom):print("Vous avez modifié l'entrée du commercant §")self._commercant=nom
Peut on configurer l'interpréteur dans cette configuration afin d'être sur que python n'accède pas via propriety ailleur dans le code ?
self._commercant est une variable privée mais comme beaucoup de choses en Python c'est une convention. Rien n'empêche d'y accéder (i = ingredient() ; i._commercant = 'foo'), c'est juste mal de le faire.
# ...
Posté par saimn . En réponse au message Python et les propriétés. property(). Évalué à 3.
Il n'y a pas d'accesseur par défaut, rien ne permet de dire que
self.commercant(la property) doit renvoyerself._commercant(une variable classique), donc c'est à toi de le faire (better explicit ...). C'est pour ca aussi que tu ne risque pas de boucle infinie, quand tu setself._commercantça n'appelle pas la property.Et au passage autant utiliser la syntaxe avec les décorateurs, c'est fait pour :
self._commercantest une variable privée mais comme beaucoup de choses en Python c'est une convention. Rien n'empêche d'y accéder (i = ingredient() ; i._commercant = 'foo'), c'est juste mal de le faire.