descripteur python

Un descripteur est une classe qui possède les méthodes suivantes.

Méthode Calendrier des appels
get(self,obj,type) Lors de la récupération des attributs
set(self,obj,value) Lors de la définition des attributs
delete(self,obj) Lors de la suppression d'un attribut

Puisqu'il s'agit d'une méthode différente des méthodes spéciales telles que getattr et setattr, elle doit être reconnue séparément du descripteur.

-Les comportements liés aux opérations d'attributs peuvent être découpés dans une autre classe (= les fonctions liées aux attributs qui couvrent les classes peuvent être réutilisées.) -Peut définir un comportement qui ne s'applique qu'à des attributs spécifiques. (getattr, setattr affecte tous les attributs de cette classe)

Il y a un mérite du bol. Les descripteurs sont également utilisés derrière les propriétés, les classes / méthodes statiques, super, etc.

descriptor_basic.py


#Définition du descripteur
class LogProp:
    def __init__(self,name): #1
        self.name = name #1

    #Traitement lors de la récupération des attributs
    def __get__(self,obj,type): #2
        prin(f'{self.name}:get') #2,6
        return obj.__dict__[self.name] #2,4

    #Traitement lors de la définition des attributs
    def __set__(self,obj,value) #3
        prin(f'{self.name}:set{value}') #3,7
        obj.__dict__[self.name] = value #3,5

class App:
    #Définition du descripteur
    title = LogProp('title') #8

if __name__ == '__main__':
    app = App()
    app.title = 'Python d'auto-apprentissage' #9
    print(app.title) #9

Le côté descripteur définit init, get, set. Tout d'abord, la méthode init (# 1) reçoit et stocke le nom d'attribut qui est la cible du descripteur. Ce sont les informations clés pour passer des valeurs plus tard.

Et set (# 2), get (# 3) sont les principales méthodes de transmission des valeurs. get et set reçoivent les informations suivantes via des arguments.

obj: instance cible type: Classe cible valeur: valeur passée

Dans cet exemple, la valeur de l'instance est obtenue et référencée via dict. Puisque get et set reprennent l'opération d'attribut de l'instance, l'acquisition et la définition de la valeur d'attribut seront invalides s'il n'y a aucune opération pour acquérir ou enregistrer une valeur.

Réduisez la description comme # 4 et 5 dans le code, et ajoutez des opérations supplémentaires lors de l'obtention et du réglage. Dans cet exemple, le résultat de l'acquisition et du réglage est sorti par impression.

Pour associer un descripteur prédéfini à un attribut, utilisez # 8. (C'est de la même manière que vous écrivez une propriété avec une fonction de propriété.)

Vous pouvez confirmer que le journal est sorti au moment où le titre est défini comme # 9 dans le code.

Python d'auto-apprentissage cité dans le chapitre 11 Syntaxe orientée objet

Recommended Posts

descripteur python
Python
descripteur de lecture de document python HowTo
python kafka
Les bases de Python ⑤
Résumé Python
Python intégré
Technique Python
Étudier Python
Compte à rebours Python 2.7
Mémorandum Python
astuces python
fonction python ①
Les bases de Python
Mémo Python
ufo-> python (3)
Installer python
Python Singleton
Les bases de Python ④
Mémorandum Python 2
mémo python
Python Jinja2
Incrément Python
atCoder 173 Python
[Python] fonction
Installation de Python
Installer Python 3.4.3.
Essayez Python
Itératif Python
Algorithme Python
Python2 + mot2vec
[Python] Variables
Fonctions Python
Python sys.intern ()
Tutoriel Python
Fraction Python
underbar python C'est ce que
Démarrer python
[Python] Trier
Remarque: Python
Sortie du journal python
Les bases de Python
[Scraping] Scraping Python
Mise à jour Python (2.6-> 2.7)
mémo python
Mémorandum Python
Python #sort
ufo-> python
Python nslookup
[Rpmbuild] Python 3.7.3.
Python au prorata (1)
mémorandum python
Télécharger Python
mémorandum python
Mémo Python
a commencé python
Python #JSON
quiz python