Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como deletar objeto de uma classe

Olá! Eu tenho uma classe e gostaria de saber se é possível criar um método, dentro da classe, que delete um dos objetos. Inicialmente eu tentei da seguinte forma:

def Classe:
    __init__(self,  parametro):
    self.parametro = parametro

    def deleta_objeto(self):
        self = None

Mas ao abrir no console, criar o objeto "objeto=Classe(1)" e chamar a função "objeto.deleta_objeto()" não acontece nada pois o objeto continua armazenado na memória. Por outro lado, ao digitar direto pelo console a expressão "objeto = None" eu consigo deletá-lo. Achei bem estranho e gostaria de saber onde estou errando.

Desde já, agradeço.

1 resposta
solução!

Olá Ramon,

Mesmo que você altere o self dentro do objeto a referência anterior (chamada de objeto no seu exemplo) ainda vai continuar apontando para o objeto em memória, e por ainda existir referências não pode ser removido da memória.

Acredito que o melhor seja fazer apenas del objeto, e não um método interno (nem sei se é possível fazer internamente), ao fazer del objeto a referência vai ser removida e, caso não exista mais nenhuma referência, o objeto pode então ser removido da memória.