Olá Gabriel! Tudo certo? Espero que sim. 🙂
Desculpe pelo atraso no retorno.
No caso específico do exemplo do professor, o único propósito da função criada através do decorador @staticmethod era retornar o valor de uma váriavel. Para tal objetivo, definir uma váriavel de classe se mostra um caminho mais eficaz, pois não não é necessário a criação de uma função.
No entanto, existem outras situações em que o uso de um @staticmethod é justificável. A seguir, eu mostro um exemplo.
Vamos analisar o caso de estarmos manipulando um objeto que guarda dados de uma conta bancária e queremos saber a qual banco um determinado código pertence, não importando qual objeto estamos acessando. Ou seja, todos aqueles objetos instânciados a partir dessa classe devem ter a capacidade de responder essa questão.
class Conta:
def __init__(self, agencia, conta):
self.__agencia = agencia
self.__conta = conta
@property
def agencia(self):
return self.__agencia
@property
def conta(self):
return self.__conta
@agencia.setter
def agencia(self, nova_agencia):
self.__agencia = nova_agencia
@conta.setter
def conta(self, nova_conta):
self.__conta = nova_conta
@staticmethod
def nome_banco(codigo):
if codigo == '260':
print("Nubank")
elif codigo == '001':
print("Banco do Brasil")
elif codigo == '237':
print("Banco Bradesco")
else:
print("Banco não Encontrado.")
Conta.nome_banco('001')
Já a respeito de decoradores...
Decoradores são funcões que aceitam outras funções e acrescentam informações a essas mesmas. O Python possui decoradores internos como: @staticmethod, @classmethod e @property.
@staticmethod: Define uma função que é chamada de dentro de um objeto e independe dos valores internos do mesmo.
@classmethod: Define uma função que se refere aos atributos da classe e não dos objetos que está instânciando.
@property>: Forma específica da linguagem Python de definir getters e setters (existe ainda a opção de um deleter).
Espero ter ajudado! Quaisquer dúvidas ou questinoamentos, estou à disposição. 😉
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!