Bonjour,
Au cours de mes lectures sur les classes en Python, j'ai découvert que la gestion des variables de classe est très libre comparée à celle de C++ (avec qui j'ai appris la POO).
Sachant que n'importe qui peut accéder aux attributs d'un objet, je me pose la question suivante : faut-il faire des getters et setters ou accéder directement aux champs ? Exemple :
J'ai lu qu'on pouvait faire des mécanismes de protection avec property(), comme expliqué par Thierry Chapuis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class Frame: def __init__(self, rawdata=""): self.rawdata = rawdata f3 = Frame("bonjour") print f3.rawdata f3.rawdata ="Hello" print f3.rawdata
Ne voulant pas forcément reproduire le comportement du C++ avec du Python, ma question se rapporte à la philosophie générale du langage plutôt qu'à savoir comment faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 # Son équivalent Python class MaClasse(object): def __init__(self, x): self._x = x # x propery definition def getx(self): return self._x def sety(self, value): self._x = value x = properpy(getx, setx)
Question au passage : faut-il forcément que ma classe Frame hérite de object ? J'ai lu que c'était obligatoire pour faire des classes new style et je voulais savoir si c'était une bonne pratique.
Merci d'avance !![]()
Partager