Getter / setter et philosophie Python
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 :
Code:
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 |
J'ai lu qu'on pouvait faire des mécanismes de protection avec property(), comme expliqué par Thierry Chapuis :
Code:
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) |
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.
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 ! :ccool: