Technologieaustausch

Das am besten geeignete objektorientierte Programmier-Tutorial für Einsteiger im Internet: 14 Python-Implementierungen von Klassen und Objekten – Können Sie den Unterschied zwischen statischen Methoden und Klassenmethoden einer Klasse erkennen?

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Das am besten geeignete objektorientierte Programmier-Tutorial für Einsteiger im Internet: 14 Python-Implementierungen von Klassen und Objekten – Können Sie den Unterschied zwischen statischen Methoden und Klassenmethoden einer Klasse erkennen?

Zusammenfassung:

In diesem Artikel werden hauptsächlich Klassenmethoden und statische Methoden in Klassen und Objekten in Python sowie die Definitionen, Merkmale, Anwendungsszenarien und Verwendungsmethoden von Klassenmethoden und statischen Methoden vorgestellt und beide verglichen.

Ursprünglicher Link:

FreakStudios Blog

Früher empfohlen:

Möglicherweise das am besten geeignete Tutorial zur objektorientierten Programmierung für den Einstieg ins Internet: Python-Implementierung – ein Muss für Embedded-Enthusiasten!

Das am besten geeignete objektorientierte Programmier-Tutorial im Internet für den Einstieg: 00 Einführung in objektorientierte Entwurfsmethoden

Das am besten geeignete Tutorial zur objektorientierten Programmierung im Internet für den Einstieg: 01 Grundkonzepte der objektorientierten Programmierung

Das am besten geeignete objektorientierte Programmier-Tutorial im Internet für den Einstieg: 02 Python-Implementierung von Klassen und Objekten – Verwendung von Python zum Erstellen von Klassen

Das am besten geeignete Tutorial zur objektorientierten Programmierung für den Einstieg ins Internet: 03 Python-Implementierung von Klassen und Objekten – Hinzufügen von Attributen zu benutzerdefinierten Klassen

Das am besten geeignete Tutorial zur objektorientierten Programmierung für den Einstieg ins Internet: 04 Python-Implementierung von Klassen und Objekten – Methoden zu benutzerdefinierten Klassen hinzufügen

Das am besten geeignete objektorientierte Programmier-Tutorial für Anfänger im Internet: 05 Python-Implementierung von Klassen und Objekten – PyCharm-Code-Tags

Das am besten geeignete objektorientierte Programmier-Tutorial für Anfänger im Internet: 06 Python-Implementierung von Klassen und Objekten – Datenkapselung benutzerdefinierter Klassen

Das am besten geeignete objektorientierte Programmier-Tutorial für Anfänger im Internet: 07 Python-Implementierung von Klassen und Objekten – Typanmerkungen

Das am besten geeignete objektorientierte Programmier-Tutorial im Internet für den Einstieg: 08 Python-Implementierung von Klassen und Objekten – @property decorator

Das am besten geeignete objektorientierte Programmier-Tutorial für Anfänger im Internet: 09 Python-Implementierung von Klassen und Objekten – die Beziehung zwischen Klassen

Das am besten geeignete objektorientierte Programmier-Tutorial für Anfänger im Internet: 10 Python-Implementierungen von Klassen und Objekten – Klassenvererbung und Liskov-Substitutionsprinzip

Das am besten geeignete Tutorial zur objektorientierten Programmierung für den Einstieg ins Internet: Python-Implementierung von 11 Klassen und Objekten – Unterklasse, die die Methode der übergeordneten Klasse aufruft

Das am besten geeignete objektorientierte Programmier-Tutorial für Anfänger im Internet: Python-Implementierung von 12 Klassen und Objekten – Python verwendet das Protokollierungsmodul, um Programmlaufprotokolle auszugeben

Das am besten geeignete objektorientierte Programmier-Tutorial für Anfänger im Internet: Python-Implementierung von 13 Klassen und Objekten – Installation und Verwendung des visuellen Code-Leseartefakts Sourcetrail

Weitere spannende Inhalte zum Ansehen:

Kurze Analyse des CM3-Debugging-Systems

Nach einem halben Monat Arbeit wird eine Zusammenfassung des eingebetteten Technologie-Stacks veröffentlicht

Wettbewerbsgewinnende Kampfsportgeheimnisse: 05. Wie man die Arbeits- und Lerninhalte des nationalen Preisteams in elektronischen Computerwettbewerben aufteilt

Wettbewerbsgewinnende Kampfsportgeheimnisse: 04 Ein kurzer und unbedingt zu lesender Leitfaden für die eingebettete Entwicklung in elektronischen Wettbewerben

Wettbewerbsgewinnende Kampfsportgeheimnisse: 03 Gute kreative Entscheidungen – die wichtigste Voraussetzung für den Gewinn des nationalen Preises

Geheimnisse der wettbewerbsgekrönten Kampfkünste: 02 National Award Secrets – Ein schneller Einstiegsprozess für Computerwettbewerbe von College-Studenten, eine Pflichtlektüre für Anfänger

Wettbewerbsgewinnende Kampfsportgeheimnisse: 01 Wie sehen Sie das Phänomen des „Rollens“, der „Ereignisse der Vorfahren“ und der „Suche nach Verbindungen“ in zeitgenössischen College-Wettbewerben?

Wettbewerbsgewinnende Kampfsportgeheimnisse: 00 Fachwettbewerb – ein Thema, dem Ingenieurstudenten nicht ausweichen können. Wie viel wissen Sie?

Die „Kampfkunstgeheimnisse“ von Elektronik- und Computerwettbewerben – Elektronischer Wettbewerb Optoelektronik-Designwettbewerb Computerdesign-Wettbewerb Embedded-Chip- und Systemdesign-Wettbewerb, hier finden Sie alles, was Sie brauchen!

Dokumentation und Codeerfassung:

Sie können den folgenden Link besuchen, um das Dokument herunterzuladen:

https://github.com/leezisheng/Doc

Bild

Dieses Dokument führt hauptsächlich in die Verwendung von Python für die objektorientierte Programmierung ein und erfordert vom Leser ein grundlegendes Verständnis der Python-Syntax und der Mikrocontroller-Entwicklung. Im Vergleich zu anderen Blogs oder Büchern, die die objektorientierte Python-Programmierung erläutern, ist dieses Dokument detaillierter und konzentriert sich auf eingebettete Host-Computeranwendungen. Es verwendet das allgemeine Senden und Empfangen von Daten über die serielle Schnittstelle, die Datenverarbeitung, das dynamische Zeichnen von Diagrammen usw. des oberen Computers und niedrigerer Computer als Anwendungsbeispiele und verwenden Sie die Sourcetrail-Code-Software, um den Code visuell zu lesen, um das Verständnis der Leser zu erleichtern.

Die relevanten Beispielcode-Links lauten wie folgt:https://github.com/leezisheng/Python-OOP-Demo

Text

statische Methode

Am Beispiel der SensorClass-Klasse sind die in der Klasse definierten sogenannten InitSensor-, StartSensor-, StopSensor- usw. Methoden definiertObjektmethodenDas heißt, diese Methoden sind alle Nachrichten, die an das Objekt gesendet werden, und alle rufen die Eigenschaften im Objekt auf.Tatsächlich müssen die Methoden, die wir in die Klasse schreiben, keine Objektmethoden sein. Es gibt einige Methoden in der Klasse, die keine Objektattribute aufrufen müssen. Beispielsweise müssen wir möglicherweise bestimmen, ob die aktuelle Der COM-Port ist offensichtlich vorhanden. Diese Methode unterscheidet sich von Sensorobjekten, die irrelevant sind.

Als weiteres Beispiel definieren wir eine „Triangle“-Klasse, konstruieren ein Dreieck durch Übergabe von drei Seitenlängen und stellen Methoden zur Berechnung von Umfang und Fläche bereit. Die drei übergebenen Seitenlängen können jedoch möglicherweise kein Dreiecksobjekt konstruieren Wir können zuerst eine Methode schreiben, um zu überprüfen, ob drei Seitenlängen ein Dreieck bilden können. Diese Methode ist offensichtlich keine Objektmethode, da das Dreiecksobjekt beim Aufruf dieser Methode nicht erstellt wurde (da nicht bekannt ist, ob die drei Seiten dies können). ein Dreieck bilden), daher ist diese Methode eine Triangle-Klasse, aber kein Dreiecksobjekt.wir können benutzenstatische MethodeUm diese Art von Problem zu lösen, lautet der Code wie folgt.

@staticmethod
    _# 判断传感器ID号是否正确:这里判断ID号是否在0到99之间_
    def IsTrueID(id:int = 0):
        if id >= 0 and id <= 99:
            return True
        else:
            return False
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Statische Methoden sind eigentlich die Funktionen, die wir gelernt haben. Der einzige Unterschied zwischen ihnen und Funktionen besteht darin, dass statische Methoden im Raum der Klasse (Klassen-Namensraum) definiert werden, während Funktionen im Raum definiert werden, in dem sich das Programm befindet (globaler Namensraum). . Statische Methoden haben keine speziellen Parameter wie self und cls, daher bindet der Python-Interpreter keine Klasse oder kein Objekt an die darin enthaltenen Parameter. Aus diesem Grund können in der statischen Methode der Klasse keine Klassenattribute und Klassenmethoden aufgerufen werden. Hier definieren wir die statische Methode IsPort, um festzustellen, ob die Sensor-ID-Nummer korrekt ist. Die statische Methode muss mit @staticmethod geändert werden. Statische Methodenaufrufe können entweder Klassennamen oder Klassenobjekte verwenden, zum Beispiel:

_    # 设置ID号_
    id = 1
_    # 判断ID号是否符合格式_
    if SensorClass.IsTrueID(id):
        s = SensorClass()
    else:
        print("Sensor Init False")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Bild

Klassenmethode

Ähnlich wie bei statischen Methoden kann Python auch Klassenmethoden in der Klasse definieren. Der erste Parameter der Klassenmethode heißt üblicherweise cls und stellt das Informationsobjekt dar, das sich auf die aktuelle Klasse bezieht (die Klasse selbst ist auch ein Objekt und in einigen Fällen auch ein Objekt). Stellen Wird als Metadatenobjekt der Klasse bezeichnet. Über diesen Parameter können wir Informationen zur Klasse abrufen und Objekte der Klasse erstellen. Python bindet die Klasse selbst automatisch an den cls-Parameter (beachten Sie, dass sie nicht an das Klassenobjekt gebunden ist). ). Mit anderen Worten: Wenn wir die Klassenmethode aufrufen, müssen wir keine expliziten Parameter für den cls-Parameter übergeben.

Klassenmethoden müssen mit dem @classmethod-Modifikator geändert werden. Wir definieren die Klassenmethode MasterInfo in MasterClass.

@classmethod
    def MasterInfo(cls):
        print("Info : "+str(cls))

print(MasterClass.MasterInfo())
  • 1
  • 2
  • 3
  • 4
  • 5

Bild

Fügen Sie hier eine Bildbeschreibung ein