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 : 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
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
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 !