J'ai une question sur voie droite de la programmation en Python ... Peut-être qu'il peut y avoir plusieurs opinions différentes, mais ici il va:Accès à des variables privées quand il y a un getter/setter pour les
Disons que j'ai classe avec quelques attributs privés et que je l'ai mis en place deux getters/setters (pas le surchargement __getattr__
et __setattr__
, mais dans un style plus « Java-tistic »):
class MyClass:
def __init__(self):
self.__private1 = "Whatever1"
def setPrivate1(self, private1):
if isinstance(private1, str) and (private1.startswith("private")):
self.__private1 = private1
else:
raise AttributeError("Kaputt")
def getPrivate1(self):
return self.__private1
maintenant, disons quelques lignes ci-dessous, dans une autre méthode de la même classe, je dois redéfinir la valeur de ce "_ private1". Comme c'est la même classe, j'ai toujours un accès direct à l'attribut privé self. _private1.
Ma question est: Dois-je utiliser:
self.setPrivate1("privateBlaBlaBla")
ou devrais-je accéder directement:
self.__private1 ="privateBlaBlaBla"
depuis que je suis celui définissant la nouvelle valeur, je sais que ladite valeur (« privateBlaBlaBla ") est correct (un str() qui commence par" private "), donc il ne va pas laisser le système incohérent. D'un autre côté, si un autre programmeur prend mon code, et doit changer la fonctionnalité de l'attribut self .__ private1, il devra parcourir tout le code, et voir si la valeur de __private1 a été définie manuellement ailleurs. Je pense que la bonne chose à faire est de toujours utiliser la méthode setPrivate1, et d'accéder directement à la variable __private1 dans le get/set, mais j'aimerais connaître l'opinion des programmeurs Python plus expérimentés.
Merci!
Le changement de nom de '__' ne fonctionne pas très bien. –