Warum ist das erste Argument der [Python] -Klasse selbst?

Einführung

Bei der Definition einer Klasse in Python habe ich mich immer gefragt, warum das erste Argument "self" heißt, also werde ich es nachschlagen und aufschreiben.

Ist es bis auf das erste Argument selbst nutzlos?

Aus der Schlussfolgerung ist es nicht gut. Verwenden Sie in PEP8 (1) immer self als Namen des ersten Arguments der `Instanzmethode. `` ` Ist definiert als. In Bezug auf den Betrieb funktioniert es jedoch auch dann ordnungsgemäß, wenn es nicht "selbst" ist. Ein Beispiel finden Sie unter hier (2).

class Hoge():
    def __init__(self_inplace_hoge, string):
        self_inplace_hoge.string = string
        print('self_inplace_hoge: ', self_inplace_hoge.string)

class Fuga(Hoge):
    def __init__(self_inplace_fuga, string):
        self_inplace_fuga.string = string
        print('self_inplace_fuga: ', self_inplace_fuga.string)

hoge = Hoge('aaaa')
fuga = Fuga('bbbb')

print(hoge.string)
print(fuga.string)
self_inplace_hoge:  aaaa
self_inplace_fuga:  bbbb
aaaa
bbbb

Es funktioniert, aber es ist ein Regelverstoß, also können Sie es nicht tun.

Übrigens, wenn Sie es als die Rolle von "Selbst" betrachten, wird es zurückkehren, wo sich die richtig definierte Klasse im Speicher befindet. Macht es Spaß, sie unerwartet zu betrachten?

self_inplace_hoge:  <__main__.Hoge object at 0x00000123D17C1CC8>
self_inplace_fuga:  <__main__.Fuga object at 0x00000123D17C12C8>

schließlich

thisUndselfIch frage mich, ob jemand eine Regel aufstellen könnte, denn wenn Sie ihm einen Namen geben, den Sie mögen, wird es gefährlich ~ Es ist wie ein Modewort.

Referenzmaterial

(1) pep8-ja (2) self in Python class

Recommended Posts

Warum ist das erste Argument der [Python] -Klasse selbst?
Erster Python 3 ~ Der Beginn der Wiederholung ~
[Python] Was wird zuerst ausgeführt, Klassenvariable oder __init__?
Ich dachte darüber nach, warum Python selbst mit dem Gefühl eines Python-Interpreters notwendig ist
[Python] [Meta] Ist der Python-Typ ein Typ?
Ich möchte die Frage nach der Methode "__init__" und dem Argument "self" der Python-Klasse klären.
Die Antwort von "1/2" unterscheidet sich zwischen Python2 und 3
Warum die Python-Implementierung von ISUCON 5 Bottle verwendet
FAQ: Warum ist der Zahlenvergleich inkonsistent?
Dies ist die einzige grundlegende Überprüfung von Python ~ 3 ~
Die Bedeutung des Selbst
der Zen von Python
Kennen Sie den Speicherort der Python-Klassendefinitionsdatei.
Python-Implementierung der Bayes'schen linearen Regressionsklasse
Python (2) erfordert self, da die Methode eine Instanzmethode ist
[Python] Verstehe das Klassenselbst. Lerne die Rolle des Selbst aus dem Ausführungsergebnis mit oder ohne Selbst.
Der Zeitpunkt, zu dem der Wert des Standardarguments ausgewertet wird, unterscheidet sich zwischen Ruby und Python.
Nehmen Sie eine Instanz einer Python-Ausnahmeklasse nicht direkt als Argument für die Ausnahmeklasse!
Auf dem Weg zum Ruhestand von Python2
Über die Funktionen von Python
Die Kraft der Pandas: Python
Referenzreihenfolge von Klassenvariablen und Instanzvariablen in "self. Klassenvariablen" in Python
Was ist die Standard-TLS-Version des Python-Anforderungsmoduls?
Mac Initial Settings-Python (pyenv) Installation am schnellsten
[Python] Der Stolperstein des Imports
[Hikari-Python] Kapitel 09-03 Klasse (Vererbung)
Erweiterung des Python-Wörterbuchs um Argumente
Der 14. März ist der Tag des Umfangsverhältnisses. Die Geschichte der Berechnung des Umfangsverhältnisses mit Python
Ist die Niederschlagswahrscheinlichkeit korrekt?
"Die einfachste Python-Einführungsklasse" geändert
[Python] Was ist @? (Über Dekorateure)
Existenz aus Sicht von Python
[Python] So erhalten Sie den ersten und den letzten Tag des Monats
pyenv-change die Python-Version von virtualenv
Warum Super Intelli die Klasse nicht verstehen konnte
[Python] Was ist der sortierte Schlüssel?
Holen Sie sich das erste Element von Queryset
[Python] Die potenzielle Feldplanung von Python Robotics verstehen
Überprüfung der Grundlagen von Python (FizzBuzz)
Siehe Python zum ersten Mal
Untersuchen Sie die Klasse eines Objekts mit Python
Wofür ist der Python-Unterstrich (_)?
Wissenschaft "Ist Saito der Vertreter von Saito?"
Der erste Schritt von Python Matplotlib
Wenn die Genauigkeit des PCR-Tests schlecht ist, warum nicht den Test wiederholen?
Informationen zur Grundlagenliste der Python-Grundlagen
Ein einfacher Grund, warum der Rückgabewert von round (2.675,2) in Python 2,67 beträgt (in Wirklichkeit sollte er 2,68 betragen ...)
Lernen Sie die Grundlagen von Python ① Grundlegende Anfänger
[Python] Was ist ein formales Argument? So stellen Sie den Anfangswert ein
Was ist die XX-Datei im Stammverzeichnis eines beliebten Python-Projekts?
[Python-Memorandum] Verschiedene Zeitüberprüfungen ・ Die erste While-Anweisung ist ungewöhnlich langsam
Treffen Sie eine Methode einer Klasseninstanz mit der Python Bottle Web API
Was für ein Buch ist der meistverkaufte "Python Crash Course" der Welt?
Den Namen der Methode, die ihn aufgerufen hat, finden Sie in der Python-Methode
[Einführung in Python] Wie wird mit der continue-Anweisung wiederholt?
Generieren Sie eine erstklassige Sammlung in Python
Erläutern Sie den Mechanismus der PEP557-Datenklasse