Variables privées
En Python, les variables privées sont des variables destinées à être utilisées uniquement au sein de la classe dans laquelle elles sont définies, et non par le code externe. Les variables privées ne sont pas directement accessibles depuis l'extérieur de la classe.
Pour définir une variable privée dans la classe Circle, vous pouvez utiliser le préfixe double underscore (__) suivi du nom de la variable. Par exemple :
class Circle:
def __init__(self, radius):
self.__radius = radius
Cela définit une variable privée __radius dans la classe Circle.
Les variables privées sont destinées à être utilisées uniquement au sein de la classe dans laquelle elles sont définies. Elles ne sont pas directement accessibles depuis l'extérieur de la classe. Par exemple, si vous essayez d'accéder à la variable __radius depuis l'extérieur de la classe Circle, vous obtiendrez une erreur :
circle1 = Circle(5)
print(circle1.__radius) ## Cela lèvera une erreur AttributeError
Les variables privées sont utiles pour encapsuler des données au sein d'une classe et limiter la capacité du code externe à les modifier. Cependant, il est important de noter que les variables privées ne sont pas véritablement privées en Python et peuvent toujours être accessibles depuis l'extérieur de la classe en utilisant le "name mangling" (renommage de nom).
Le "name mangling" est une technique qui consiste à ajouter un préfixe spécial au nom de la variable pour la rendre plus difficile d'accès depuis l'extérieur de la classe.
Par exemple, la variable __radius peut toujours être accessible depuis l'extérieur de la classe Circle en utilisant la syntaxe suivante :
print(circle1._Circle__radius) ## Cela affichera 5
Cependant, cela n'est pas considéré comme une bonne pratique de programmation et devrait être évité.
Au lieu de cela, vous devriez utiliser les variables privées uniquement au sein de la classe dans laquelle elles sont définies et fournir des méthodes publiques pour accéder ou modifier les données si nécessaire.
Voici un exemple de classe Circle avec une variable privée __radius et des méthodes publiques pour accéder et modifier le rayon :
class Circle:
def __init__(self, radius):
self.__radius = radius
def get_radius(self):
return self.__radius
def set_radius(self, radius):
self.__radius = radius
Pour accéder au rayon d'un objet Circle, vous pouvez utiliser la méthode get_radius :
circle1 = Circle(5)
print(circle1.get_radius()) ## affiche 5
Pour modifier le rayon d'un objet Circle, vous pouvez utiliser la méthode set_radius :
circle1.set_radius(10)
print(circle1.get_radius()) ## affiche 10