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 ><.