Maison >développement back-end >Tutoriel Python >Introduction à l'utilisation de base des décorateurs de propriétés en Python

Introduction à l'utilisation de base des décorateurs de propriétés en Python

高洛峰
高洛峰original
2017-03-08 11:16:051939parcourir

Le décorateur @property de Python est utilisé pour transformer une méthode de classe en appel de propriété de classe, puis @property lui-même crée un autre décorateur pour attribuer une valeur à la propriété avec une méthode. Ce qui suit consiste à définir les attributs en lecture-écriture, en lecture seule et en écriture seule de la classe après avoir utilisé @property dans la classe.

La méthode all définit un attribut en lecture-écriture. Vous pouvez définir cet attribut ou lire cet attribut, comme indiqué à la ligne 28. Si la méthode __init__() n'est pas définie, vous ne pouvez définir cet attribut qu'en premier. pour utiliser cette propriété. A la ligne 32, si vous souhaitez connaître la valeur de l'attribut write, une erreur sera également signalée. À la ligne 34, il n'y a aucun moyen de continuer à attribuer des valeurs à l'attribut système en lecture seule. Après avoir utilisé @property ici, les « variables privées » Python peuvent être implémentées. Bien sûr, elles ne sont pas vraiment privées. La vraie confidentialité est plus compliquée, mais elle peut également être obtenue via @property ? J'écrirai après avoir appris.

class UseProperty(object):

    def __init__(self):
        self._all = 233

    @property
    def all(self):
        return self._all

    @all.setter
    def all(self, v):
        self._all = v

    @property
    def readonly(self):
        return self._all

    @property
    def write(self):
        raise AttributeError('This is not a readonly attribute.')

    @write.setter
    def write(self, value):
        self._write = value


p = UseProperty()
print p.all
p.all = 100
print p.all
p.write = 233
# print p.write
print p.readonly
# p.readonly = 10


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