[Road to Intermediate] Python scheint alles Objekte zu sein

Link zur Zusammenfassung

https://qiita.com/ganariya/items/fb3f38c2f4a35d1ee2e8

Einführung

Es scheint, dass Python alles ein Objekt ist.

?? ?? ?? ?? ?? "Ja wirklich?" ?? ?? ?? ??

Was ist ein Objekt?

Ein Python-Objekt ist alles, was Python behandelt. Und das Objekt hat ** Attribute **.

Zum Beispiel

class A:

    def __init__(self):
        self.x = 50

a = A()
print(a.x)

Im obigen Code wird der Wert mit "Punkt" wie a.x. Es ist "** Attribut **" (x), das mit diesem Zeitraum abgerufen werden kann, und ein Attribut zu haben bedeutet auch ** Objekt ** (a).

Schauen Sie sich ein Beispiel eines Objekts an

class A:

    def __init__(self):
        self.x = 50


a = A()
print(type(a))
print(type(A))
print(type(30))
print(type(int))

'''
<class '__main__.A'>
<class 'type'>
<class 'int'>
<class 'type'>
'''

Schauen wir uns das obige Beispiel an und sehen wir, dass alle Python-Daten tatsächlich Objekte sind.

Der obige Code verwendet eine integrierte Funktion namens "Typ". type ist eine Funktion, die den Typ des als Argument übergebenen Objekts zurückgibt.

Beispielsweise ist das Objekt a vom Typ A des Moduls main. Darüber hinaus hat die Klasse A, bei der es sich um den ursprünglichen Typ handelt, einen Typ namens Typ. In ähnlicher Weise ist die Python-Nummer 30 vom Typ int, und wir wissen, dass 30 ein Instanzobjekt von int ist.

Wie Sie sehen können, bestehen alle Python-Daten anscheinend aus Objekten.

Es scheint zusammengesetzt zu sein aus.

Klassenobjekt

Was ist ein Klassenobjekt?

Wie der Name schon sagt, ist ein Klassenobjekt Bezieht sich auf das "Objekt dieser Klasse, wenn Sie die Definition der Klasse abgeschlossen haben".

Zum Beispiel

class A:
    x = 50
    print(10)

    def __init__(self):
        self.x = 100
        print(self.x)


print(A.x)
a = A()

Betrachten Sie die obige Quelle.

Was passiert mit dem Ergebnis dieser Ausführung?

das ist

10
50
100

Es sieht aus wie.

Python-Klassen werden mit Ausnahme von def so ausgeführt, wie sie sind, und jede Zeile wird wie eine normale Anweisung ausgeführt.

Wenn Sie also Klasse A finden, wenn Sie eine Python-Datei von oben lesen Geh runter wie es ist

Erstellen Sie nach dem Laden der Klasse A ein Klassenobjekt mit dem Namen A. Daher wird A ein ** Klassenobjekt **, wenn das Lesen abgeschlossen ist.

Es ist wichtig, dass es sich um ein Klassenobjekt handelt.

Instanzobjekt

Instanzobjekte sind Objekte, die aus "Klassenobjekten" erstellt wurden.

Speziell

--30 (generiert aus int) --a (generiert aus A) --Funktion

Und so weiter.

Weil es aus einem Klassenobjekt generiert wird

class A:

    def __init__(self):
        self.x = 100


a = A()
print(type(a))
print(type(30))
print(type(int))

'''
<class '__main__.A'>
<class 'int'>
<class 'type'>
'''

a ist ein Klassenobjekt __main __. A vom Typ a 30 ist ein Klassenobjekt int vom Typ 30

Es ist geworden.

Auf diese Weise werden Instanzobjekte aus Klassenobjekten erstellt.

Funktionen werden auch aus einem Klassenobjekt generiert, das als Funktionsklasse bezeichnet wird.

Anwendung

Funktionen sind ebenfalls Objekte. Ein Objekt kann Attribute verwenden. Insbesondere, weil die Funktion ein Instanzobjekt ist, dessen Attribute frei festgelegt werden können.

Zum Beispiel

--Überprüfen Sie, ob matplotlib nur einmal gelesen werden kann

Sie können eine Funktion mit dem Namen erstellen.

def can_load_matplotlib():
    if can_load_matplotlib.cache is None:
        try:
            import matplotlib
        except ImportError:
            can_load_matplotlib.cache = False
        else:
            can_load_matplotlib.cache = True
    return can_load_matplotlib.cache


can_load_matplotlib.cache = None

print(can_load_matplotlib())

Bereiten Sie die Funktion can_matplotlib vor.

Die Python-Datei erstellt nur die Identität (Speicher), dass "die Funktion in dieser Zeile steht ~ ~", bis die Funktion ausgeführt wird.

Also zuallererst im obigen Code

Sie können den Code schreiben.

Ich habe diesen Code kennengelernt, als ich den Code des Übersee-Typs GitHub kopiert habe, und fand ihn erstaunlich. Aber wie schnell beschleunigt sich das Caching? Ich weiß es nicht.

Schließlich

In Python haben wir gesehen, dass Klassen, Zahlen und Zeichenfolgen Objekte sind.

Ich möchte schreiben, während ich zwischen einer Instanz und einem Klassenobjekt unterscheide.

Verweise

Recommended Posts

[Road to Intermediate] Python scheint alles Objekte zu sein
Ein Weg zum mittleren Python
[Road to Intermediate] Grundlegendes zu Python-Eigenschaften
[Road to Intermediate Python] Verwenden Sie ternäre Operatoren
[Road to Intermediate Python] Verwenden Sie Lambda-Ausdrücke
[Road to Intermediate Python] Zusammenfassung der Artikelverknüpfungen
[Python] Es scheint etwas zu geben, das __dict__ heißt
[Road to Intermediate Python] Definieren Sie die Funktion __getattr__ in der Klasse
[Road to Intermediate Python] Definieren Sie in Ihrer eigenen Klasse
[Road to Intermediate Python] Installieren Sie Pakete in großen Mengen mit pip
[Road to Intermediate Python] Verwenden Sie die if-Anweisung in der Listeneinschlussnotation
[Road to Intermediate Python] Aktiviert Vergleichsoperationen mit Originalklassen
Weg zu Intermediate Linux: Network Edition
6 Möglichkeiten zum Stringen von Objekten in Python
[Road to Intermediate Python] Rufen Sie eine Klasseninstanz wie eine Funktion mit __call__ auf
[Road to Intermediate Python] Geben Sie die Ausführungsmethode dynamisch anhand des Variablennamens an
[Python] Straße zu Schlangen (1) Umgebungskonstruktion
Der Weg zum Kompilieren zu Python 3 mit Thrift
Ich habe versucht, ein scheinbar Windows-Snipper-Tool mit Python zu implementieren
Python wurde bisher erkannt.
[Python] Der Weg zur Schlange (4) Numpy zwicken
[Einführung in Python3 Tag 12] Kapitel 6 Objekte und Klassen (6.3-6.15)
[Python] Weg zur Schlange (6) Manipuliere Pandas
[Einführung in Python3 Tag 11] Kapitel 6 Objekte und Klassen (6.1-6.2)
[Road to Intermediate] Was sind Pythons * Argumente, ** Kwargs?
Auf Python 2.7.9 aktualisiert
Ab Python 3.10 scheint das von inspect.signature () zurückgegebene Formular auf typing.get_type_hints () zu basieren.
"Backport" zu Python 2
[Python] Wertfehler: Arrays müssen alle gleich lang sein
Vorbereiten der Steuerung von Nashornobjekten mit Skripten in Grasshopper / Python
[Python] tkinter Code, der wahrscheinlich wiederverwendet wird
[Python] Pandas Code, der wahrscheinlich wiederverwendet wird
Nur Arrays der Größe 1 können in Python-Skalare konvertiert werden
[Road to Intermediate] Verwenden Sie die in Python integrierten Funktionsvariablen
[Python] Weg zur Schlange (5) Spiele mit Matplotlib
Python> Ist es möglich, Inline-Kommentare abzugeben?> Es scheint, dass es sich um mehrere Zeilen handeln muss
Was scheint eine Vorlage für den Standardeingabe-Teil des Competition Pro in Python3 zu sein