le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Questo articolo introduce principalmente i metodi di classe e i metodi statici nelle classi e negli oggetti in Python, nonché le definizioni, le caratteristiche, gli scenari applicativi e i metodi di utilizzo dei metodi di classe e dei metodi statici e li confronta.
Breve analisi del sistema di debug CM3
Dopo mezzo mese di lavoro, viene rilasciato un riepilogo dello stack tecnologico incorporato
È possibile visitare il seguente collegamento per scaricare il documento:
Italiano: https://github.com/leezisheng/Doc
Questo documento introduce principalmente come utilizzare Python per la programmazione orientata agli oggetti e richiede che i lettori abbiano una conoscenza di base della sintassi Python e dello sviluppo del microcontrollore. Rispetto ad altri blog o libri che spiegano la programmazione orientata agli oggetti Python, questo documento è più dettagliato e si concentra sulle applicazioni del computer host incorporato. Utilizza l'invio e la ricezione di dati sulla porta seriale comune, l'elaborazione dei dati, il disegno di grafici dinamici, ecc. del computer superiore e computer inferiore come esempi di applicazione e utilizzare il software di codice Sourcetrail per leggere visivamente il codice per facilitare la comprensione dei lettori.
I collegamenti al codice di esempio pertinente sono i seguenti:Italiano: https://github.com/leezisheng/Python-OOP-Demo
Prendendo come esempio la classe SensorClass, i cosiddetti metodi InitSensor, StartSensor, StopSensor, ecc. definiti nella classe sonoMetodi degli oggetti, vale a dire, questi metodi sono tutti messaggi inviati all'oggetto e tutti chiamano le proprietà dell'oggetto.In effetti, i metodi che scriviamo nella classe non devono essere metodi dell'oggetto. Ci sono alcuni metodi nella classe che non necessitano di chiamare gli attributi dell'oggetto. Ad esempio, nel metodo InitSensor, potremmo aver bisogno di determinare se il metodo current La porta COM esiste Ovviamente, questo metodo è diverso da Gli oggetti sensore sono irrilevanti.
Per un altro esempio, definiamo una classe "Triangolo", costruiamo un triangolo passando in tre lunghezze di lato e forniamo metodi per calcolare perimetro e area. Tuttavia, le tre lunghezze di lato potrebbero non essere in grado di costruire un oggetto triangolo possiamo prima scrivere un metodo per verificare se tre lunghezze dei lati possono formare un triangolo. Questo metodo ovviamente non è un metodo dell'oggetto, perché l'oggetto triangolo non è stato creato quando viene chiamato questo metodo (perché non è noto se i tre lati possano farlo). formare un triangolo), quindi questo metodo è una classe Triangle ma non un oggetto triangolo.possiamo usaremetodo staticoPer risolvere questo tipo di problema, il codice è il seguente.
@staticmethod
_# 判断传感器ID号是否正确:这里判断ID号是否在0到99之间_
def IsTrueID(id:int = 0):
if id >= 0 and id <= 99:
return True
else:
return False
I metodi statici sono in realtà le funzioni che abbiamo imparato. L'unica differenza tra loro e le funzioni è che i metodi statici sono definiti nello spazio della classe (spazio dei nomi della classe), mentre le funzioni sono definite nello spazio in cui si trova il programma (spazio dei nomi globale). . I metodi statici non hanno parametri speciali come self e cls, quindi l'interprete Python non eseguirà alcuna associazione di classi o oggetti per i parametri in esso contenuti. Per questo motivo, nessun attributo di classe e nessun metodo di classe può essere chiamato nei metodi statici di una classe. Qui definiamo il metodo statico IsPort per determinare se il numero ID del sensore è corretto. Il metodo statico deve essere modificato con @staticmethod. Per chiamare un metodo statico, puoi utilizzare il nome di una classe o un oggetto di classe, ad esempio:
_ # 设置ID号_
id = 1
_ # 判断ID号是否符合格式_
if SensorClass.IsTrueID(id):
s = SensorClass()
else:
print("Sensor Init False")
Similmente ai metodi statici, Python può anche definire metodi di classe nella classe. Il primo parametro del metodo della classe è convenzionalmente chiamato cls, che rappresenta l'oggetto delle informazioni relative alla classe corrente (anche la classe stessa è un oggetto, e in alcuni. place Chiamato oggetto metadati della classe), tramite questo parametro possiamo ottenere informazioni relative alla classe e creare oggetti della classe Python legherà automaticamente la classe stessa al parametro cls (nota che non è vincolato all'oggetto classe ). In altre parole, quando chiamiamo il metodo della classe, non è necessario passare esplicitamente i parametri per il parametro cls.
I metodi della classe devono essere modificati utilizzando il modificatore @classmethod. Definiamo il metodo della classe MasterInfo in MasterClass. Il codice di esempio è il seguente:
@classmethod
def MasterInfo(cls):
print("Info : "+str(cls))
print(MasterClass.MasterInfo())