Maison >développement back-end >Tutoriel Python >[Python] Implémenter les propriétés publiques des classes Python

[Python] Implémenter les propriétés publiques des classes Python

高洛峰
高洛峰original
2017-02-16 11:30:441498parcourir

Contexte

Aujourd'hui, j'ai vu quelqu'un demander si les classes Python ont des caractéristiques similaires aux attributs publics, c'est-à-dire que si les attributs correspondants d'une certaine instance sont modifiés, les attributs correspondants de toutes les instances de la classe le seront. modifié en conséquence. Je pensais avoir pensé à utiliser une classe auxiliaire en mode singleton pour résoudre le problème.

Idée

Modifiez une instance et l'autre instance sera également modifiée. Cela ressemble aux caractéristiques du mode singleton, mais cela ne cible qu'un seul attribut, vous pouvez donc emprunter une classe auxiliaire.

Code

class Attr():
    attr = {}
    def __init__(self):
        self.__dict__ = self.attr
class Myclass():
    def __init__(self):
        self.attr = Attr()
    @property
    def value(self):
        return self.attr.value
    @value.setter
    def value(self, value):
        self.attr.value = value

Démonstration

In [47]: a = Myclass()

In [48]: b = Myclass()

In [49]: a.value = 1

In [50]: b.value
Out[50]: 1

In [51]: b.value = 2

In [52]: a.value, b.value
Out[52]: (2, 2)

Impressions

Utilisez des modèles de conception et leurs combinaisons.

Pour plus d'implémentations [Python] des attributs publics des classes Python, veuillez faire attention au site Web PHP chinois pour les articles connexes !

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
Article précédent:Les bases de PythonArticle suivant:Les bases de Python