[Python] Verstehe das Klassenselbst. Lerne die Rolle des Selbst aus dem Ausführungsergebnis mit oder ohne Selbst.

[Python] Verstehe das Klassenselbst. Lerne die Rolle des Selbst aus dem Ausführungsergebnis mit oder ohne Selbst.

Alle, die Python gestartet haben, haben sich gefragt: Inhalte, die überall voller Inhalte sind.

Reorganisieren Sie sich.


### ■ Zusammenfassung -Es ist standardmäßig erforderlich, ein Argument der Methode in der Klasse festzulegen. └ Sonst Fehler └ Verwenden Sie sich gewohnheitsmäßig

・ Selbst ist optional └ Funktioniert auch wenn es nicht selbst ist

-Wenn Sie Variablen in der Klasse verwenden, verwenden Sie self. Variables. └ Wenn Sie x = 123 verwenden, wird "self.x"

・ Globale Variablen können so verwendet werden, wie sie in der Klasse sind


### ■ Details zur Überprüfung
## Unterschied im Betrieb mit und ohne Selbst Erstellen Sie die folgende Klasse, um den Unterschied im Betrieb mit und ohne Selbst zu sehen.

** ▼ Bestätigungsklasse **

class1


class class1:
    def method1(self):
        print("Ausgeführte Methode1")

x = class1()
x.method1()

#Ausgabe
#Ausgeführte Methode1

** ▼ Ohne Selbst **

Kein Selbst


class class1:
    def method1():
        print("Ausgeführte Methode1")

x = class1()
x.method1()

#Ausgabe
# TypeError: method1() takes 0 positional arguments but 1 was given

** ■ Fehler ** method1() takes 0 positional arguments but 1 was given

Die in der Klasse definierte Methode "method1" akzeptiert kein Argument (0), sondern 1.

Selbst im ausgeführten Prozess ist das Innere von () leer und es wird kein Argument eingegeben. (Normalerweise Argument 0) x.method1()


** ■ Ursache ** Beim Ausführen einer Methode in einer Klasse wird die Instanz selbst automatisch als Argument angegeben.


Beispiel
x.method1 () → Argument 1 x.method1 ('A', 'B') → Argument 3


** ■ Gegenmaßnahme ** Den Methoden in der Klasse muss standardmäßig mindestens ein Argument zugewiesen werden.

⇛ Sein Argument ist "Selbst"

Das Argument kann anders sein als das Selbst. Es ist üblich, sich selbst zu benutzen.


## Es muss nicht selbst sein ** ▼ Bei Verwendung anderer Zeichen als self **

Wenn das Argument self durch "a" und "aiueo" ersetzt wird.

Andere Charaktere als Selbst ①


class class1:
    def method1(a):
        print("Ausgeführte Methode1")

x = class1()
x.method1()

#Ausgabe
#Ausgeführte Methode1

Andere Charaktere als Selbst ②


class class1:
    def method1(AIUEO):
        print("Ausgeführte Methode1")

x = class1()
x.method1()

#Ausgabe
#Ausgeführte Methode1

Beide laufen ohne Probleme.


## Unterschiede innerhalb und außerhalb der Def-Klasse

Wenn Sie die definierte Methode aus der Klasse entfernen, wird das Argument natürlich nicht standardmäßig übergeben.

Außerhalb des Unterrichts


def method1():
    print("Ausgeführte Methode1")
    
method1()

#Ausgabe
#Ausgeführte Methode1

Wenn Sie im Gegensatz zur Methode in der Klasse nur ein Argument übergeben, wird eine Fehlermeldung angezeigt.

Error


def method1():
    print("Ausgeführte Methode1")
    
method1('A')

#Ausgabe
# TypeError: method1() takes 0 positional arguments but 1 was given

Fehler: method1 () akzeptiert 0 Positionsargumente, aber 1 wurde angegeben

Ein Fehler, dass es 0 Argumente gibt, aber 1 extra.


## Setzen Sie Argumente mit Methoden in der Klasse

Da in der Klasse standardmäßig ein Argument festgelegt ist, muss beim Festlegen anderer Argumente mehr als üblich festgelegt werden. (Wird selbst + α)

Beim Setzen des Arguments


class class2:
    def weather(self, day, sky):
        print(day + 'Das Wetter ist' + sky + 'ist.')

x = class2()
x.weather('heute', 'Sonnig')

#Ausgabe
#Das Wetter ist heute sonnig.

Legen Sie drei Argumente für die Wettermethode in der Klasse fest: "Selbst", "Tag" und "Himmel".


** ▼ Wenn "self" in "a" geändert wird ** Natürlich funktioniert es normal, auch wenn es nicht "selbst" ist.

Anders als ich selbst


class class2:
    def weather(a, day, sky):
        print(day + 'Das Wetter ist' + sky + 'ist.')

x = class2()
x.weather('heute', 'Sonnig')

#Ausgabe
#Das Wetter ist heute sonnig.

## Verwenden Sie Variablen in der Klasse

Der große Vorteil der Klasse besteht darin, dass Sie Funktionen und Variablen festlegen können, die nur innerhalb der Klasse gültig sind. (Nicht global)

Sie müssen es mit "self" kombinieren, um die Variablen in der Klasse zu verwenden.


** ▼ Verwenden Sie Variablen in der Klasse **

Um die in der Klasse in der Methode definierte Variable "x = 123" aufzurufen, muss sie "self.x" sein.

class3


class class3:
    x = 123

    def method1(self):
        print(self.x)

cls = class3()
cls.method1()  

#Ausgabe
# 123

** ▼ Wenn Sie nicht selbst hinzufügen **

Ein Fehler tritt auf, wenn in "self.x" kein Selbst vorhanden ist.

nur x


class class3:
    x = 123

    def method1(self):
        print(x)

cls = class3()
cls.method1()  

#Ausgabe
# NameError: name 'x' is not defined

Fehler: Name 'x' ist nicht definiert "X = 123" in der Klasse ist nicht "x".


** ▼ Globale Variablen verwenden **

Self ist nicht erforderlich, wenn Variablen verwendet werden, die außerhalb der Klasse definiert sind.

Verwenden Sie globale Variablen


x = 123

class class3:

    def method1(self):
        print(x)

cls = class3()
cls.method1()

#Ausgabe
# 123

Durch die Verwendung von self können Sie klar unterscheiden, ob es sich um eine globale Variable oder eine Variable in einer Klasse handelt.


** ▼ Anders als ich selbst ** Übrigens funktioniert es anders als selbst.

Anders als ich selbst


class class3:
    x = 123
    
    def method1(AIUEO):
        print(AIUEO.x)

cls = class3()
cls.method1()  

#Ausgabe
# 123

Ich habe mich gefragt, was Selbst ist, aber ich denke, es ist bequem und notwendig zu wissen, wie man es benutzt.

Recommended Posts

[Python] Verstehe das Klassenselbst. Lerne die Rolle des Selbst aus dem Ausführungsergebnis mit oder ohne Selbst.
Lerne Nim mit Python (ab Anfang des Jahres).
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
Warum ist das erste Argument der [Python] -Klasse selbst?
Lassen Sie uns das Ausführungsergebnis des Programms mit C ++, Java, Python messen.
Von der Einführung von JUMAN ++ bis zur morphologischen Analyse von Japanisch mit Python
Lernen Sie die Grundlagen von Python ① Grundlegende Anfänger
Treffen Sie eine Methode einer Klasseninstanz mit der Python Bottle Web API
Ich habe versucht, die Standardrolle neuer Mitarbeiter mit Python zu optimieren
[Python3] Verstehe die Grundlagen von Beautiful Soup
Notizen vom Anfang von Python 1 lernen
Überprüfen Sie die Existenz der Datei mit Python
Das Ergebnis der Installation von Python auf Anaconda
Lernen Sie das Entwurfsmuster "Singleton" mit Python
Lernen Sie intuitiv die Umformung von Python np
Python Hinweis: Die geheime Rolle von Kamma
Notizen vom Anfang von Python 2 lernen
Lernen Sie das Designmuster "Facade" mit Python
[Python3] Grundlegendes zu Dateivorgängen
"Python AI Programmierung" ab 0 für Windows
Geschäftseffizienz von Grund auf mit Python
Generieren Sie eine Klasse aus einer Zeichenfolge in Python
Python-Eingabe
Aufbau einer explosiven Python-Umgebung ab Null (Mac)
Registrierung bei PyPI aus einer modernen Python-Bibliothek selbst erstellt
[Python] -Klasse, Instanz
Über Python, Klasse
Dynamische Eingabe von Python
SQL zu SQL
[Python] Verstehe das Klassenselbst. Lerne die Rolle des Selbst aus dem Ausführungsergebnis mit oder ohne Selbst.
MeCab von Python
Python-Klasse, Instanz
# Python-Grundlagen (Klasse)
[Python] Lesen des Django-Quellcodes Ansicht ab Null ①
Einführung in die Mathematik ab Python Study Memo Vol.1
So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
Sie können die Methode der Klasse direkt in Python3 aufrufen, ohne @staticmethod hinzuzufügen
Deep Learning von Grund auf neu Die Theorie und Implementierung des mit Python erlernten Deep Learning Kapitel 3
2016 Todai Mathematik mit Python gelöst
Zeigen Sie das Ergebnis der Geometrieverarbeitung in Python an
Berechnen Sie die Gesamtzahl der Kombinationen mit Python
Überprüfen Sie das Datum der Flaggenpflicht mit Python
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
Auszug nur vollständig aus dem Ergebnis von Trinity
Konvertieren Sie den Zeichencode der Datei mit Python3
Von der Einführung von Pyethapp bis zur Vertragsabwicklung
[Python] Bestimmen Sie den Typ der Iris mit SVM
Vom Anfangszustand von CentOS8 bis zum Ausführen von PHP Python Perl Ruby mit Nginx
Extrahieren Sie Bilder und Tabellen mit Python aus PDF, um die Berichtslast zu verringern
Ich dachte darüber nach, warum Python selbst mit dem Gefühl eines Python-Interpreters notwendig ist
Extrahieren Sie die Tabelle der Bilddateien mit OneDrive & Python
Die Wand beim Ändern des Django-Dienstes von Python 2.7 auf Python 3-Serie
Fügen Sie Attribute von Klassenobjekten mit einer for-Anweisung hinzu
Die Geschichte von Python ohne Inkrement- und Dekrementoperatoren.
Ich möchte das Ausführungsergebnis von strace erfassen
Kennen Sie den Speicherort der Python-Klassendefinitionsdatei.
[Python] Ruft den Gesetzestext aus der e-GOV-Gesetz-API ab
Zerstören Sie den Zwischenausdruck der Sweep-Methode mit Python
Studie vom Anfang von Python Hour1: Hallo Welt
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Python-Implementierung der Bayes'schen linearen Regressionsklasse
Holen Sie sich den Rückkehrcode eines Python-Skripts von bat
Berechnen Sie den Regressionskoeffizienten der einfachen Regressionsanalyse mit Python
Mit Python psycopg2 erhalten Sie Ergebnisse im Diktatformat
Lernen Sie das Entwurfsmuster "Chain of Responsibility" in Python
Vorbereiten der Ausführungsumgebung von PyTorch mit Docker November 2019
Reproduzieren Sie das Ausführungsbeispiel von Kapitel 4 von Hajipata in Python
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
14 Tests, um den überraschend verwirrenden Umfang von Python zu verstehen