Python-Deskriptor

Ein Deskriptor ist eine Klasse mit den folgenden Methoden.

Methode Anruf-Timing
get(self,obj,type) Beim Abrufen von Attributen
set(self,obj,value) Beim Festlegen von Attributen
delete(self,obj) Beim Löschen eines Attributs

Da es sich um eine andere Methode als spezielle Methoden wie getattr und setattr handelt, muss sie getrennt vom Deskriptor erkannt werden.

-Verhalten in Bezug auf Attributoperationen kann auf eine andere Klasse ausgeschnitten werden (= Attributbezogene Funktionen, die sich über Klassen erstrecken und wiederverwendet werden können) -Kann Verhalten definieren, das nur für bestimmte Attribute gilt. (getattr, setattr wirkt sich auf alle Attribute dieser Klasse aus)

Es gibt ein Verdienst der Schüssel. Deskriptoren werden auch hinter Eigenschaften, Klassen / statischen Methoden, Super usw. verwendet.

descriptor_basic.py


#Definition des Deskriptors
class LogProp:
    def __init__(self,name): #1
        self.name = name #1

    #Verarbeitung beim Abrufen von Attributen
    def __get__(self,obj,type): #2
        prin(f'{self.name}:get') #2,6
        return obj.__dict__[self.name] #2,4

    #Verarbeitung beim Setzen von Attributen
    def __set__(self,obj,value) #3
        prin(f'{self.name}:set{value}') #3,7
        obj.__dict__[self.name] = value #3,5

class App:
    #Definition des Deskriptors
    title = LogProp('title') #8

if __name__ == '__main__':
    app = App()
    app.title = 'Python zum Selbststudium' #9
    print(app.title) #9

Die Deskriptorseite definiert init, get, set. Zunächst empfängt und speichert die Methode init (# 1) den Attributnamen, der das Ziel des Deskriptors ist. Dies ist die Schlüsselinformation für die spätere Übergabe von Werten.

Und set (# 2), get (# 3) sind die Hauptmethoden zum Übergeben von Werten. get und set erhalten die folgenden Informationen über Argumente.

obj: Zielinstanz Typ: Zielklasse Wert: Wert übergeben

In diesem Beispiel wird der Wert der Instanz über dict abgerufen und referenziert. Da get und set die Attributoperation der Instanz übernehmen, ist die Erfassung und Einstellung des Attributwerts ungültig, wenn keine Operation zum Erfassen oder Speichern eines Werts vorhanden ist.

Minimieren Sie die Beschreibung wie # 4,5 im Code und fügen Sie beim Abrufen und Einstellen zusätzliche Operationen hinzu. In diesem Beispiel wird das Ergebnis der Erfassung und Einstellung per Druck ausgegeben.

Verwenden Sie # 8, um einem Attribut einen vordefinierten Deskriptor zuzuordnen. (Auf diese Weise schreiben Sie eine Eigenschaft mit einer Eigenschaftsfunktion.)

Sie können bestätigen, dass das Protokoll zum Zeitpunkt der Ausgabe ausgegeben wird, wenn Sie den Titel wie # 9 im Code und in sy festlegen.

Python zum Selbststudium Zitiert aus Kapitel 11 Objektorientierte Syntax

Recommended Posts

Python-Deskriptor
Python
Python-Dokument lesen Deskriptor HowTo
Kafka Python
Python-Grundlagen ⑤
Python-Zusammenfassung
Eingebaute Python
Python-Technik
Python studieren
Python 2.7 Countdown
Python-Memorandum
Python-Tipps
Python-Funktion ①
Python-Grundlagen
Python-Memo
Ufo-> Python (3)
Installieren Sie Python
Python Singleton
Python-Grundlagen ④
Python-Memorandum 2
Python-Memo
Python Jinja2
Python-Inkrement
atCoder 173 Python
[Python] -Funktion
Python-Installation
Python installieren 3.4.3.
Versuchen Sie Python
Python iterativ
Python-Algorithmus
Python2 + word2vec
[Python] -Variablen
Python-Funktionen
Python sys.intern ()
Python-Tutorial
Python-Fraktion
Python Underbar Das ist was
Starten Sie Python
[Python] Sortieren
Hinweis: Python
Python-Protokoll ausgeben
Python-Grundlagen
[Scraping] Python-Scraping
Python-Update (2.6-> 2.7)
Python-Memo
Python-Memorandum
Python #sort
Ufo-> Python
Python nslookup
[Rpmbuild] Python 3.7.3.
Prorate Python (1)
Python Memorandum
Laden Sie Python herunter
Python Memorandum
Python-Memo
Python gestartet
Python #JSON
Python-Quiz