моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
В этой статье в основном представлены методы класса и статические методы в классах и объектах Python, а также определения, характеристики, сценарии применения и методы использования методов класса и статических методов, а также их сравнение.
Краткий анализ системы отладки CM3
Спустя полмесяца работы выпущен краткий обзор стека встроенных технологий.
Вы можете перейти по следующей ссылке, чтобы скачать документ:
https://github.com/leezisheng/Doc
Этот документ в основном знакомит с тем, как использовать Python для объектно-ориентированного программирования, и требует от читателей базового понимания синтаксиса Python и разработки микроконтроллеров. По сравнению с другими блогами или книгами, объясняющими объектно-ориентированное программирование на Python, этот документ более подробен и фокусируется на приложениях встроенного главного компьютера. Он использует отправку и получение данных через общий последовательный порт, обработку данных, построение динамических графиков и т. д. верхнего компьютера. и нижний компьютер в качестве примеров приложений и используйте программное обеспечение Sourcetrail для визуального чтения кода, чтобы облегчить понимание читателям.
Соответствующие ссылки на примеры кода следующие:https://github.com/leezisheng/Python-OOP-Demo
Если взять в качестве примера класс SensorClass, то так называемые методы InitSensor, StartSensor, StopSensor и т. д., определенные в классе,Методы объекта, то есть все эти методы представляют собой сообщения, отправленные объекту, и все они вызывают свойства объекта.Фактически, методы, которые мы пишем в классе, не обязательно должны быть методами объекта. В классе есть некоторые методы, которым не нужно вызывать атрибуты объекта. Например, в методе InitSensor нам может потребоваться определить, является ли текущий объект. COM-порт существует. Очевидно, что этот метод отличается от объектов Sensor, которые не имеют значения.
В качестве другого примера мы определяем класс «Треугольник», создаем треугольник, передавая длины трех сторон, и предоставляем методы для расчета периметра и площади. Однако три переданные длины сторон могут оказаться невозможными для создания объекта треугольника, поэтому. мы можем сначала написать метод для проверки того, могут ли три стороны образовать треугольник. Этот метод, очевидно, не является объектным методом, поскольку объект треугольника не был создан при вызове этого метода (поскольку неизвестно, могут ли три стороны образовать треугольник). образуют треугольник), поэтому этот метод является классом Triangle, а не объектом треугольника.мы можем использоватьстатический методДля решения такого рода проблем используется следующий код.
@staticmethod
_# 判断传感器ID号是否正确:这里判断ID号是否在0到99之间_
def IsTrueID(id:int = 0):
if id >= 0 and id <= 99:
return True
else:
return False
Статические методы на самом деле являются функциями, которые мы изучили. Единственная разница между ними и функциями заключается в том, что статические методы определяются в пространстве класса (пространстве имен класса), а функции определяются в пространстве, где находится программа (глобальное пространство имен). . Статические методы не имеют специальных параметров, таких как self и cls, поэтому интерпретатор Python не будет выполнять привязку классов или объектов для содержащихся в нем параметров. Из-за этого никакие атрибуты и методы класса не могут быть вызваны в статических методах класса. Здесь мы определяем статический метод IsPort, чтобы определить правильность идентификационного номера датчика. Статический метод необходимо изменить с помощью @staticmethod. Чтобы вызвать статический метод, вы можете использовать либо имя класса, либо объект класса, например:
_ # 设置ID号_
id = 1
_ # 判断ID号是否符合格式_
if SensorClass.IsTrueID(id):
s = SensorClass()
else:
print("Sensor Init False")
Подобно статическим методам, Python также может определять методы класса. Первый параметр метода класса условно называется cls и представляет собой объект информации, относящийся к текущему классу (сам класс также является объектом, и в некоторых случаях). места Называется объектом метаданных класса), через этот параметр мы можем получать информацию, относящуюся к классу, и создавать объекты класса. Python автоматически привязывает сам класс к параметру cls (обратите внимание, что он не привязан к объекту класса). ) . Другими словами, когда мы вызываем метод класса, нам не нужно явно передавать параметры для параметра cls.
Методы класса необходимо изменить с помощью модификатора @classmethod. Мы определяем метод класса MasterInfo в MasterClass. Пример кода выглядит следующим образом:
@classmethod
def MasterInfo(cls):
print("Info : "+str(cls))
print(MasterClass.MasterInfo())