Maison >développement back-end >Tutoriel Python >Comment puis-je implémenter pythoniquement les getters et les setters ?

Comment puis-je implémenter pythoniquement les getters et les setters ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-14 17:46:11829parcourir

How Can I Pythonically Implement Getters and Setters?

Quelle est la manière pythonique d'utiliser les getters et les setters ?

L'utilisation des getters et des setters offre un moyen pratique de contrôler l'accès aux attributs privés en Python . Voici quelques-unes des approches couramment utilisées :

Approche basée sur la méthode :

Vous pouvez créer des méthodes getter et setter distinctes, comme indiqué ci-dessous :

def set_property(property, value):  
def get_property(property): 

Cependant, cette approche n’est pas considérée comme très pythonique. Une méthode plus préférable consiste à utiliser :

Manipulation des attributs d'objet :

Vous pouvez attribuer directement des valeurs aux attributs d'objet en utilisant la notation par points :

object.property = value  
value = object.property

Cette approche est facile à utiliser et à comprendre, mais elle n'offre aucune encapsulation ni contrôle sur les attributs accès.

Propriétés Python :

La manière la plus pythonique d'implémenter les getters et les setters est d'utiliser des propriétés. Cela vous permet de définir les méthodes getter, setter et deleter dans une seule ligne de code :

class C(object):
    @property
    def x(self):
        """I'm the 'x' property."""
        print("getter of x called")
        return self._x

    @x.setter
    def x(self, value):
        print("setter of x called")
        self._x = value

    @x.deleter
    def x(self):
        print("deleter of x called")
        del self._x

c = C()
c.x = 'foo'  # setter called
foo = c.x    # getter called
del c.x      # deleter called

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn