Art
1. Definieren Sie eine Klasse
Das Syntaxformat der Klassendefinition ist wie folgt:
class ClassName: <statement-1> . . . <statement-N>
Eine Klasse besteht manchmal auch aus Attributen und Methoden Wenn wir eine Klasse definieren, müssen wir die Attribute der Klasse festlegen. Dazu ist der Konstruktor erforderlich.
Der Konstruktor der Klasse lautet wie folgt:
def __init__(self,[...):
Die Klasse ist definiert Init()-Methode, der Instanziierungsvorgang der Klasse ruft automatisch die init()-Methode auf.
Wenn der Konstruktor dann dem Destruktor entspricht, k?nnen wir beim Erstellen einer Klasse natürlich den Konstruktor zum Festlegen von Eigenschaften verwenden. Wenn eine Klasse zerst?rt wird, wird der Destruktor aufgerufen.
Die Syntax des Destruktors lautet wie folgt:
def __del__(self,[...):
Kinder, die genau hinsehen, werden feststellen, dass es einen besonderen Unterschied zwischen Klassenmethoden und gew?hnlichen Funktionen gibt. Sie müssen einen zus?tzlichen ersten Parameternamen haben. , laut Konvention lautet sein Name self.
Was repr?sentiert also das Selbst?
Wir k?nnen uns Beispiele ansehen und die Antwort anhand von Beispielen herausfinden:
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- class Test: def prt(self): print(self) print(self.__class__) t = Test() t.prt()
Beobachten Sie die Ausgabeergebnisse:
Es ist deutlich aus den Ausführungsergebnissen ersichtlich, self stellt eine Instanz einer Klasse dar, gibt die Adresse des aktuellen Objekts aus und self.__class__ zeigt auf die Klasse.
Natürlich ist self kein Python-Schlüsselwort, was bedeutet, dass es normal ausgeführt werden kann, wenn wir es durch andere Zeichen ersetzen. Es ist nur so, dass wir es gewohnt sind, self
2 zu verwenden. Historische Probleme in Python, die Klassen definieren
Python In der Iteration der Version gibt es ein historisches Problem mit Klassen, n?mlich das Problem mit Klassen neuen und alten Stils. Schauen Sie sich insbesondere den folgenden Code an:
#!/usr/bin/env python # -*- coding: UTF-8 -*- # 舊式類 class OldClass: pass # 新式類 class NewClass(object): pass
Wie Sie sehen k?nnen, Hier werden verschiedene der beiden verwendet. Sie k?nnen sehen, dass der gr??te Unterschied darin besteht, dass die Klasse im neuen Stil die Objektklasse erbt. Natürlich ist es am besten, die Klasse im neuen Stil zu definieren. Dieses Problem besteht in Python3 nicht, da Python3 Alle Klassen in sind Klassen neuen Stils.
Was ist also der Unterschied zwischen Klassen im neuen Stil und Klassen im alten Stil?
Führen Sie den folgenden Code aus:
#!/usr/bin/env python # -*- coding: UTF-8 -*- # 舊式類 class OldClass: def __init__(self, account, name): self.account = account; self.name = name; # 新式類 class NewClass(object): def __init__(self, account, name): self.account = account; self.name = name; if __name__ == '__main__': old_class = OldClass(111111, 'OldClass') print(old_class) print(type(old_class)) print(dir(old_class)) print('\n') new_class=NewClass(222222,'NewClass') print(new_class) print(type(new_class)) print(dir(new_class))
Beobachten Sie die Ausgabeergebnisse sorgf?ltig und vergleichen Sie sie. Beachten Sie, dass die Ausgabeergebnisse in Python3 genau gleich sind . Weil es in Python3 kein Problem zwischen Klassen im neuen Stil und Klassen im alten Stil gibt.