Dans ce tuto, nous allons en savoir plus sur les méthodes Getter, Setter et Deleter et comment les utiliser.
Dans cet exemple, nous avons une classe appelée Person ayant quatre variables: prénom, nom, adresse et email, que nous obtenons à l’aide du prénom et du nom. Nous avons une méthode appelée fullname comme nom complet que nous obtenons à l’aide du prénom et du nom. Créons un objet per = Person('Sam', 'Edison', 'India')
pour que nous puissions comprendre ce qui se passe.
Ici self sera mon objet -> per, first -> Sam, last -> Edison
et add -> India
. Essayons d’afficher per.fullname()
et per.email
J’imprime la variable à l’aide de
objet per
son prénom Sam concaténé avec un point et le nom de famille qui est Edison et puis
concaténé avec @gmail.com
. Maintenant si je veux changer le prénom, avec Samuel
par exemple, Observons ce qui se passe
Nous constatons que l’adresse mail est toujours la même et nous allons comprendre pourquoi. Quand je
crée un objet il sera
stocké avec certaines variables qui sont initialement à l’intérieur l’objet (dans notre cas first= Sam, last= Edison, add= India).
Au moment où Je crée un objet ma méthode init va être appelée avec les 4 variables qu’elle a initialement. Donc, lorsque nous appelons print(per.fullname())
et
print(per.email)
après avoir défini l’objet per
, ce sont toujours ces valeurs initiales que nous avons.
Tous les attributs dans le constructeur init sont appelés seulement une seule fois et per.first = 'Samuel'
initialise la variable first-> Samuel
. Rien ne se passe dans email
qui est à l’intérieur de mon constructeur init qui a justement déjà été appelé avec le prénom Sam
. Quand nous appelons print(per.fullname())
par la suite, la méthode fullname() prendra en compte le nouveau prénom qui est Samuel
pris dans la méthode fullname() de self.first==> Samuel
.
Par contre, quand print(per.email)
est appelé pour la deuxième fois il n y a pas de changement parce que l’adresse email est récupérée a l’intérieur de la méthode init qui ne sera appelée qu’une seule fois. Que devons-nous faire?
Donc au lieu de le mettre à l’intérieur de la méthode init nous pouvons créer une autre méthode
appelée email
, et le problème sera résolu
Dans init email
était un attribut que nous avons appelé plus haut, variable et maintenant email
est une méthode c’est la raison pour laquelle lorsque nous affichons nous avons en sortie les références de la méthode. Nous avons juste à l’appeler comme une méthode en ajoutant les parenthèses () à la fin
Mais si nous voulons avoir accès à email
même si c’est une méthode, nous ne sommes pas obligés de l’appeler comme une méthode mais plutôt comme une variable dans ce cas, que devons-nous faire ? Nous devons utiliser un décorateur @property. Nous utiliserons le décorateur
si nous ne voulons pas changer la fonctionnalité d’une fonction (méthode). Nous avons donc
Nous pouvons donc faire la même chose avec la méthode fullname()
et la méthode name_and_Country()
que j’ai ajoutée et nous obtenons
On appelle egalement ce processus Getter.
Jusqu’ici nous avons changé le prénom uniquement. Et si on changeait le nom complet ?
Actuellement fullname est une méthode et non un attribut. Si nous essayons d’assigner quelque chose à une méthode ça nous dira en erreur que fullname n’est pas attribut car nous ne pouvons assigner une valeur qu’ à un attribut et non à une méthode.
Ceci est possible mais pour cela nous allons utiliser une méthode appelée
Setter en écrivant @fullname.setter
Et si je veux effacer le nom complet ? effacer un Object et un attribut est possible mais si nous essayons d’effacer une méthode, nous aurons un message d’erreur
Ceci est possible mais nous allons utiliser un décorateur, une méthode appelée
Deleter en écrivant @fullname.deleter
Pour vérification, si nous essayons d’afficher le prénom et le nom, nous avons
Et bien, nous avons des idées plus claires par rapport aux méthodes Getter, Setter et deleter.
C’était tout pour ce tutoriel
Merci pour la lecture