Was war überraschend an Python-Klassen?

Was mich überrascht hat

Stellen Sie sich einen Code wie diesen vor:

sample.py


class Sample:

    sample_list = []

    def __init__(self, args1):
        self.name = args1

    def add_args(self, args2):
        self.sample_list.append(args2)

Wenn ich diesen Code ausführe, wird die sample_list wie unten gezeigt zwischen a und b geteilt.

>>> a = Sample('a')
>>> b = Sample('b')
>>> a.add_args('hoge')
>>> b.add_args('huga')
>>> a.sample_list
['hoge', 'huga']

Lösungen

Sie können dieses Problem vermeiden, indem Sie die Klasse wie folgt mit Instanzvariablen entwerfen.

sample.py


class Sample:

    def __init__(self, args1):
        self.name = args1
        self.sample_list = []

    def add_args(self, args2):
        self.sample_list.append(args2)

Ausführungsergebnis

>>> a = Sample('a')
>>> b = Sample('b')
>>> a.add_args('hoge')
>>> b.add_args('huga')
>>> a.sample_list
['hoge']
>>> b.sample_list
['huga']

Referenz

Class-Python 3.8.5-Dokumentation

Recommended Posts

Was war überraschend an Python-Klassen?
Python: Ein Hinweis zu Klasse 1 "Abstract"
[Python] Was ist @? (Über Dekorateure)
[Python] Über Executor und zukünftige Klassen
Was ich süchtig nach Python Autorun war
Apropos alte und neue Klassen in Python
Über Python-Slices
Über die Einschlussnotation von Python
Über Python tqdm.
Über die Python-Ausbeute
Über Python, Klasse
Informationen zur Python-Vererbung
Über Python, range ()
Über Python Decorator
Was ist Python?
Informationen zur Python-Referenz
Über Python-Dekorateure
[Python] Über Multi-Prozess
Was ist Python?
Worauf ich bei der Python-Codierung achten muss: Kommentare, Typanmerkungen, Datenklassen, Aufzählungen (Aufzählung)
Was ich über KI / maschinelles Lernen mit Python gelernt habe (1)
Über Funktionsargumente (Python)
[Python] Was ist Pipeline ...
[Python] Memo über Funktionen
Python-Klassen sind langsam
Zusammenfassung über Python3 + OpenCV3
Über Python für ~ (Bereich)
[Python] Memo Über Fehler
Informationen zur Python-Entwicklungsumgebung
Python: Über Funktionsargumente
Was ich über KI / maschinelles Lernen mit Python gelernt habe (3)
Python, über die Ausnahmebehandlung
Python-Grundkurs (13 Klassen)
Über Python Pyramid Traversal
Über Python3 ... (Ellipsenobjekt)
[Python] Kapitel 01-01 Über Python (Erster Python)
[Python] Informationen zur Standardeingabe
Über __all__ in Python
[Python] Was ist virtualenv?
Wovon ich süchtig war, als ich Python Tornado benutzte
Was ich über KI / maschinelles Lernen mit Python gelernt habe (2)
Dinge, die Sie bei der Implementierung von Airflow mit Docker-Compose beachten sollten
Was ich über KI / maschinelles Lernen mit Python gelernt habe (4)
Wovon ich süchtig war, als der Processing-Benutzer zu Python wechselte
Worüber ich mir Sorgen gemacht habe, als ich Bilder mit matplotlib angezeigt habe
[Python] Informieren Sie sich über pip
Liebe wurde in Python 2 geboren
[Python] if __name__ == Was ist '__ main__' :?
Python-Anfänger-Memorandum-Funktion
Über die Aufzählungsfunktion (Python)
Über verschiedene Codierungen von Python 3
Was ist heute mit dem Aktienhandel?
Python-Kurs zum Lernen mit Chemoinfomatik
Über Python, len () und randint ()
Über Perl, Python, PHP, Ruby
Informationen zu Python-Datums- und Zeitzone
Memorandum über Korrelation [Python]