2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Cet article présente principalement les méthodes de classe et les méthodes statiques dans les classes et les objets en Python, ainsi que les définitions, les caractéristiques, les scénarios d'application et les méthodes d'utilisation des méthodes de classe et des méthodes statiques, et compare les deux.
Brève analyse du système de débogage CM3
Après un demi-mois de travail, une synthèse de la stack technologique embarquée est publiée
Vous pouvez visiter le lien suivant pour télécharger le document :
https://github.com/leezisheng/Doc
Ce document présente principalement comment utiliser Python pour la programmation orientée objet et nécessite que les lecteurs aient une compréhension de base de la syntaxe Python et du développement de microcontrôleurs. Comparé à d'autres blogs ou livres expliquant la programmation orientée objet Python, ce document est plus détaillé et se concentre sur les applications informatiques hôtes intégrées. Il utilise l'envoi et la réception de données sur le port série commun, le traitement des données, le dessin de graphiques dynamiques, etc. et un ordinateur inférieur comme exemples d'application, et utilisez le logiciel de code Sourcetrail pour lire visuellement le code afin de faciliter la compréhension des lecteurs.
Les exemples de liens de code pertinents sont les suivants :https://github.com/leezisheng/Python-OOP-Démo
En prenant la classe SensorClass comme exemple, les méthodes dites InitSensor, StartSensor, StopSensor, etc. définies dans la classe sontMéthodes d'objet, c'est-à-dire que ces méthodes sont toutes des messages envoyés à l'objet, et elles appellent toutes les propriétés de l'objet.En fait, les méthodes que nous écrivons dans la classe n'ont pas besoin d'être des méthodes objet. Certaines méthodes de la classe n'ont pas besoin d'appeler des attributs d'objet. Par exemple, dans la méthode InitSensor, nous devrons peut-être déterminer si l'attribut actuel est utilisé. Le port COM existe. Évidemment, cette méthode est différente des objets Sensor qui ne sont pas pertinents.
Pour un autre exemple, nous définissons une classe "Triangle", construisons un triangle en passant trois longueurs de côté et fournissons des méthodes pour calculer le périmètre et l'aire. Cependant, les trois longueurs de côté transmises peuvent ne pas être en mesure de construire un objet triangle, donc. on peut d'abord écrire Une méthode pour vérifier si trois longueurs de côtés peuvent former un triangle. Cette méthode n'est évidemment pas une méthode objet, car l'objet triangle n'a pas été créé lorsque cette méthode est appelée (car on ne sait pas si les trois côtés peuvent former un triangle. former un triangle), cette méthode est donc une classe Triangle mais pas un objet triangle.on peut utiliserméthode statiquePour résoudre ce genre de problème, le code est le suivant.
@staticmethod
_# 判断传感器ID号是否正确:这里判断ID号是否在0到99之间_
def IsTrueID(id:int = 0):
if id >= 0 and id <= 99:
return True
else:
return False
Les méthodes statiques sont en fait les fonctions que nous avons apprises. La seule différence entre elles et les fonctions est que les méthodes statiques sont définies dans l'espace de la classe (espace de noms de classe), tandis que les fonctions sont définies dans l'espace où se trouve le programme (espace de noms global). . Les méthodes statiques n'ont pas de paramètres spéciaux tels que self et cls, donc l'interpréteur Python n'effectuera aucune liaison de classe ou d'objet pour les paramètres qu'il contient. Pour cette raison, aucun attribut de classe ni méthode de classe ne peut être appelé dans les méthodes statiques d'une classe. Ici, nous définissons la méthode statique IsPort pour déterminer si le numéro d'identification du capteur est correct. La méthode statique doit être modifiée avec @staticmethod. Pour appeler une méthode statique, vous pouvez utiliser soit un nom de classe, soit un objet de classe, par exemple :
_ # 设置ID号_
id = 1
_ # 判断ID号是否符合格式_
if SensorClass.IsTrueID(id):
s = SensorClass()
else:
print("Sensor Init False")
Semblable aux méthodes statiques, Python peut également définir des méthodes de classe dans la classe. Le premier paramètre de la méthode de classe est classiquement nommé cls, qui représente l'objet d'informations lié à la classe actuelle (la classe elle-même est également un objet, et dans certains cas). lieux Appelé l'objet de métadonnées de la classe), grâce à ce paramètre, nous pouvons obtenir des informations relatives à la classe et créer des objets de la classe. Python liera automatiquement la classe elle-même au paramètre cls (notez qu'elle n'est pas liée à l'objet de classe. ) . En d’autres termes, lorsque nous appelons la méthode de classe, nous n’avons pas besoin de transmettre explicitement des paramètres pour le paramètre cls.
Les méthodes de classe doivent être modifiées à l'aide du modificateur @classmethod. Nous définissons la méthode de classe MasterInfo dans MasterClass. L'exemple de code est le suivant :
@classmethod
def MasterInfo(cls):
print("Info : "+str(cls))
print(MasterClass.MasterInfo())