Mi información de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Este artículo presenta principalmente métodos de clase y métodos estáticos en clases y objetos en Python, así como las definiciones, características, escenarios de aplicación y métodos de uso de métodos de clase y métodos estáticos, y los compara.
Breve análisis del sistema de depuración CM3.
Después de medio mes de trabajo, se publica un resumen de la pila de tecnología integrada
Puede visitar el siguiente enlace para descargar el documento:
https://github.com/leezisheng/Doc
Este documento presenta principalmente cómo usar Python para la programación orientada a objetos y requiere que los lectores tengan un conocimiento básico de la sintaxis de Python y el desarrollo de microcontroladores. En comparación con otros blogs o libros que explican la programación orientada a objetos de Python, este documento es más detallado y se centra en aplicaciones de computadora host integradas. Utiliza el envío y recepción de datos del puerto serie común, el procesamiento de datos, el dibujo de gráficos dinámicos, etc. y computadora inferior como ejemplos de aplicaciones, y use el software de código Sourcetrail para leer visualmente el código para facilitar la comprensión de los lectores.
Los enlaces de código de muestra relevantes son los siguientes:https://github.com/leezisheng/Demostración-de-programación-orientada-a-Python
Tomando la clase SensorClass como ejemplo, los llamados métodos InitSensor, StartSensor, StopSensor, etc. definidos en la clase sonMétodos de objetos, Es decir, todos estos métodos son mensajes enviados al objeto y todos llaman a las propiedades del objeto.De hecho, los métodos que escribimos en la clase no necesitan ser métodos de objeto. Hay algunos métodos en la clase que no necesitan llamar a los atributos del objeto. Por ejemplo, en el método InitSensor, es posible que necesitemos determinar si el método actual. El puerto COM existe Obviamente, este método es diferente de los objetos Sensor que son irrelevantes.
Para otro ejemplo, definimos una clase "Triángulo", construimos un triángulo pasando las longitudes de tres lados y proporcionamos métodos para calcular el perímetro y el área. Sin embargo, es posible que las tres longitudes de los lados pasadas no puedan construir un objeto triangular, por lo que. Primero podemos escribir un método para verificar si las longitudes de tres lados pueden formar un triángulo. Este método obviamente no es un método de objeto, porque el objeto triángulo no se ha creado cuando se llama a este método (porque no se sabe si los tres lados pueden formar un triángulo). formar un triángulo), por lo que este método es la clase Triangle pero no un objeto triángulo.nosotros podemos usarmétodo estáticoPara resolver este tipo de problema, el código es el siguiente.
@staticmethod
_# 判断传感器ID号是否正确:这里判断ID号是否在0到99之间_
def IsTrueID(id:int = 0):
if id >= 0 and id <= 99:
return True
else:
return False
Los métodos estáticos son en realidad las funciones que hemos aprendido. La única diferencia entre ellos y las funciones es que los métodos estáticos se definen en el espacio de la clase (espacio de nombres de clase), mientras que las funciones se definen en el espacio donde se encuentra el programa (espacio de nombres global). . Los métodos estáticos no tienen parámetros especiales como self y cls, por lo que el intérprete de Python no vinculará ninguna clase u objeto para los parámetros que contiene. Debido a esto, no se pueden llamar atributos de clase ni métodos de clase en métodos estáticos de una clase. Aquí definimos el método estático IsPort para determinar si el número de identificación del sensor es correcto. El método estático debe modificarse con @staticmethod. Para llamar a un método estático, puede utilizar un nombre de clase o un objeto de clase, por ejemplo:
_ # 设置ID号_
id = 1
_ # 判断ID号是否符合格式_
if SensorClass.IsTrueID(id):
s = SensorClass()
else:
print("Sensor Init False")
Al igual que los métodos estáticos, Python también puede definir métodos de clase en la clase. El primer parámetro del método de clase se denomina convencionalmente cls, que representa el objeto de información relacionado con la clase actual (la clase en sí también es un objeto, y en algunos casos). lugares Llamado el objeto de metadatos de la clase), a través de este parámetro podemos obtener información relacionada con la clase y crear objetos de la clase. Python vinculará automáticamente la clase al parámetro cls (tenga en cuenta que no está vinculado al objeto de clase). ). En otras palabras, cuando llamamos al método de clase, no necesitamos pasar parámetros explícitamente para el parámetro cls.
Los métodos de clase deben modificarse usando el modificador @classmethod. Definimos el método de clase MasterInfo en MasterClass. El código de muestra es el siguiente.
@classmethod
def MasterInfo(cls):
print("Info : "+str(cls))
print(MasterClass.MasterInfo())