Résumez le décorateur @property de Python

Prémisse majeure

class Man1():
    def __init__(self, name):
        self.name = name

Avec cette définition, le nom de la variable d'instance peut être référencé et réécrit.

#Initialisation
Paul = Man("Paul")

#Peut être référencé
print(Paul.name)
#Réinscriptible
Paul.name = Mac

Je veux réaliser une variable privée

Mais une variable d'instance

Dans certains cas. dans ce cas,

#Préfixer la variable d'instrument__Défini dans(Cette__le nom est mutilé et ce nom ne peut pas être référencé)
class Man():
    def __init__(self, name):
        self.__name = name

    #Ce nom de fonction ne doit pas chevaucher un nom de variable d'instance existant
    @property
    def name(self):
        return self.__name

    #Besoin de définir le getter avec le même nom avant le setter
    #Sans ce paramètre, la propriété name serait en lecture seule
    @name.setter
    def name(self, name):
        self.__name = name

Par

#Initialisation
Paul = Man("Paul")

#référence
# Paul.name()n'est pas
print(Paul.name)

#Récrire
# Paul.name("Mac")n'est pas
Paul.name = "Mac"

#Pas d'accès direct à la propriété d'origine(Erreur)
Paul.__name
Paul.__name = "Mac"

Cependant, il est possible de faire référence et de réécrire la variable d'instance «__name» avec «Paul._Man__name» (donc «mock»).

Recommended Posts

Résumez le décorateur @property de Python
Utilisez Property Decorator?
Décorateur de propriétés [Révisé] qui met en cache les valeurs
Décorateur 1
Décorateur 2
Décorateur
Décorateur