2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
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.
Kurze Analyse des CM3-Debugging-Systems
Sie können den folgenden Link besuchen, um das Dokument herunterzuladen:
https://github.com/leezisheng/Doc
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
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
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")
Ä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())