Article image
Regilene Silva
Regilene Silva06/02/2024 10:30
Compartilhe

A metamorfose de uma Função - para iniciantes

    “Quando certa instância da Classe, emergindo de um contexto de sonhos de código, despertou em seu domínio, percebeu-se transformada em Método..”

    Uma comparação poética e criativa que destaca a mudança de papel e significado que ocorre quando uma função é definida dentro de uma classe em Python.

    Na obra "A Metamorfose" de Franz Kafka, Gregor Samsa acorda certa manhã e descobre que se transformou em um inseto monstruoso. Embora a obra não forneça uma explicação detalhada ou científica para essa transformação, Kafka intencionalmente deixa o motivo da metamorfose de Gregor ambíguo e aberto à interpretação. A metamorfose de Samsa é muitas vezes interpretada como uma metáfora para a alienação, isolamento e desumanização que ele sente diante da vida. 

    Quando uma função em Python é definida dentro de uma classe e usa ’self’ como parâmetro, ela adquire uma nova natureza e funcionalidade. Torna-se um Método associado a instâncias da classe (objetos),  ganhando a capacidade de acessar o contexto e os atributos específicos dessa instância. Essa metamorfose a torna mais integrada à estrutura da classe.

    Enquanto Samsa experimenta um estado de estranhamento e desconexão da sociedade e sua família, a Função, metamorfoseada em Método, atinge seu propósito.  Transformada em Método, a função agora se torna parte significativa dessa “sociedade” chamada classe, pois o uso de ’self’ permite que a função (agora método) se conecte e interaja com o contexto mais amplo da classe.

    A Metamorfose de Samsa destaca a alienação e o desconforto, a transformação de uma Função em Método destaca a melhoria da estrutura e funcionalidade do código. Embora conceitos bem distintos, achei interessante ilustrar a ideia de Funções e Métodos no contexto da definição de Classe.


    Em Python, ao criamos uma classe, definimos um método especial chamado construtor (__init__). Ele é chamado quando uma instância de classe é criada. Ele também inicializa os atributos da instância que serão compartilhados entre os outros métodos da mesma classe. Quando criamos funções dentro da classe e elas usam o parâmetro(self) essas funções se tornam métodos. O uso do 'self' indica que esses métodos estão associados à instância de classe e podem acessar os atributos e outros métodos dessa instância.

    class PagamentoPix:
      def __init__(self, valor, destinatario):
          self.valor = valor
          self.destinatario = destinatario
          self.status = "Pendente"
    
    
      def realizar_pagamento(self):
                                # Simula a lógica de realizar o pagamento Pix:
          print(f"Realizando pagamento Pix de R${self.valor} para {self.destinatario}...")
          self.status = "Concluído"
          print("Pagamento Pix concluído!")
    
    
    # Criando uma instância da classe PagamentoPix
    pagamento1 = PagamentoPix(valor=150.0, destinatario="Nome do Destinatario")
    
    
    # Exibindo informações antes do pagamento:
    print(f"Status antes do pagamento: {pagamento1.status}")
    
    
    # Realizando o pagamento:
    pagamento1.realizar_pagamento()
    
    
    # Exibindo informações após o pagamento:
    print(f"Status após o pagamento: {pagamento1.status}")
    
    

    No exemplo, o método __init__ é utilizado como construtor e inicializa os atributos valor, destinatario e status. O método 'realizar_pagamento' simula a execução de um pagamento Pix, alterando o status para "Concluído" ao finalizar. Ao criar uma instância da classe 'PagamentoPix' e realizar o pagamento, você pode observar como os atributos são compartilhados entre os métodos da mesma instância.


    Em resumo: criamos a classe, a classe possui um construtor (__init__) que inicializa atributos compartilhados, e as outras funções dentro da classe que usam 'self' como parâmetro se tornam métodos associados à instância da classe. Essa estrutura promove a organização e a reutilização de código em programação orientada a objetos.

    Espero com esse conteúdo contribuir para quem está começando, assim como eu ><.

    Compartilhe
    Comentários (2)
    Gustavo Silva
    Gustavo Silva - 06/02/2024 12:34

    as melhores capas de artigo! top haha

    Ronaldo Schmidt
    Ronaldo Schmidt - 06/02/2024 11:14

    Muito bom. Excelente artigo.

    Gostei de como se referenciou as classes.