minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Este artigo apresenta principalmente métodos de classe e métodos estáticos em classes e objetos em Python, bem como as definições, características, cenários de aplicação e métodos de uso de métodos de classe e métodos estáticos, e compara os dois.
Breve análise do sistema de depuração CM3
Após meio mês de trabalho, um resumo da pilha de tecnologia embarcada é lançado
Você pode visitar o seguinte link para baixar o documento:
https://github.com/leezisheng/Doc
Este documento apresenta principalmente como usar Python para programação orientada a objetos e exige que os leitores tenham um conhecimento básico da sintaxe Python e do desenvolvimento de microcontroladores. Comparado com outros blogs ou livros que explicam a programação orientada a objetos Python, este documento é mais detalhado e se concentra em aplicativos de computador host incorporados. Ele usa envio e recebimento de dados de porta serial comum, processamento de dados, desenho de gráfico dinâmico, etc. e computador inferior como exemplos de aplicação e use o software de código Sourcetrail para ler visualmente o código para facilitar a compreensão dos leitores.
Os links de código de exemplo relevantes são os seguintes:https://github.com/leezisheng/Python-OOP-Demo
Tomando a classe SensorClass como exemplo, os chamados métodos InitSensor, StartSensor, StopSensor, etc.Métodos de objeto, ou seja, todos esses métodos são mensagens enviadas ao objeto e todos chamam as propriedades do objeto.Na verdade, os métodos que escrevemos na classe não precisam ser métodos de objeto. Existem alguns métodos na classe que não precisam chamar atributos de objeto. Por exemplo, no método InitSensor, podemos precisar determinar se o atual. A porta COM existe obviamente, este método é diferente dos objetos Sensor são irrelevantes.
Para outro exemplo, definimos uma classe "Triângulo", construímos um triângulo passando três comprimentos laterais e fornecemos métodos para calcular o perímetro e a área. No entanto, os três comprimentos laterais passados podem não ser capazes de construir um objeto triângulo, portanto. podemos primeiro escrever um método para verificar se três comprimentos de lados podem formar um triângulo. Este método obviamente não é um método de objeto, porque o objeto triângulo não foi criado quando este método é chamado (porque não se sabe se os três lados podem). formar um triângulo), então este método é da classe Triangle, mas não um objeto triângulo.podemos usarmétodo estáticoPara resolver esse tipo de problema, o código é o seguinte.
@staticmethod
_# 判断传感器ID号是否正确:这里判断ID号是否在0到99之间_
def IsTrueID(id:int = 0):
if id >= 0 and id <= 99:
return True
else:
return False
Os métodos estáticos são na verdade as funções que aprendemos. A única diferença entre eles e as funções é que os métodos estáticos são definidos no espaço da classe (namespace da classe), enquanto as funções são definidas no espaço onde o programa está localizado (namespace global). . Os métodos estáticos não possuem parâmetros especiais, como self e cls, portanto, o interpretador Python não fará nenhuma ligação de classe ou objeto para os parâmetros que ele contém. Por causa disso, nenhum atributo e método de classe pode ser chamado em métodos estáticos de uma classe. Aqui definimos o método estático IsPort para determinar se o número de ID do sensor está correto. O método estático precisa ser modificado com @staticmethod. Para chamar um método estático, você pode usar um nome de classe ou um objeto de classe, por exemplo:
_ # 设置ID号_
id = 1
_ # 判断ID号是否符合格式_
if SensorClass.IsTrueID(id):
s = SensorClass()
else:
print("Sensor Init False")
Semelhante aos métodos estáticos, Python também pode definir métodos de classe na classe. O primeiro parâmetro do método de classe é convencionalmente denominado cls, que representa o objeto de informação relacionado à classe atual (a própria classe também é um objeto, e em alguns casos). lugares Chamado de objeto de metadados da classe), através deste parâmetro podemos obter informações relacionadas à classe e criar objetos da classe Python irá vincular automaticamente a própria classe ao parâmetro cls (observe que ele não está vinculado ao objeto de classe. ). Em outras palavras, quando chamamos o método da classe, não precisamos passar parâmetros explicitamente para o parâmetro cls.
Os métodos de classe precisam ser modificados usando o modificador @classmethod. Definimos o método de classe MasterInfo em MasterClass.
@classmethod
def MasterInfo(cls):
print("Info : "+str(cls))
print(MasterClass.MasterInfo())