Construtores e destrutores são métodos especiais em Python que permitem criar e destruir objetos de uma classe, respectivamente.

Construtores

O construtor em Python é o método __init__(). Ele é executado automaticamente quando um objeto é criado a partir de uma classe e é utilizado para inicializar os atributos do objeto. O primeiro parâmetro de um construtor deve ser sempre self, que representa o próprio objeto. Os demais parâmetros são utilizados para receber os valores dos atributos:

class Pessoa:
    def __init__(self, nome, idade):
        self.nome = nome
        self.idade = idade

pessoa = Pessoa("João", 30)
print(pessoa.nome) # Saída: João
print(pessoa.idade) # Saída: 30

Neste exemplo, utilizamos o construtor para definir os valores dos atributos nome e idade quando um objeto Pessoa é criado.

Destrutores

O destrutor em Python é o método __del__(). Ele é executado automaticamente quando um objeto de uma classe é destruído, seja por meio de uma instrução del ou quando o objeto deixa de ser referenciado. O destrutor não recebe parâmetros e é utilizado para liberar recursos utilizados pelo objeto:

class Pessoa:
    def __init__(self, nome, idade):
        self.nome = nome
        self.idade = idade

    def __del__(self):
        print("Objeto destruído")

pessoa = Pessoa("João", 30)
del pessoa # Saída: Objeto destruído

Neste exemplo, utilizamos o destrutor para imprimir uma mensagem indicando que o objeto Pessoa foi destruído. Quando a instrução del pessoa é executada, o objeto é destruído e o destrutor é executado automaticamente.