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!