Python: __delete__ vs __del__

Ambos __delete__y __del__son métodos dunder o mágicos en Python. Los métodos Dunder o mágicos en Python son los métodos que tienen dos guiones bajos de prefijo y sufijo en el nombre del método. Dunder aquí significa «Doble bajo (guiones bajos)». Estos se utilizan comúnmente para la sobrecarga del operador.

__del__

__del__es un método destructor que se llama tan pronto como se eliminan todas las referencias del objeto, es decir, cuando un objeto se recolecta como basura.

Sintaxis:

def __del__(self):
    body of destructor
    .
    .

Ejemplo: Aquí está el ejemplo simple de destructor. Al usar la palabra clave del, eliminamos todas las referencias del objeto ‘obj’, por lo tanto, el destructor se invoca automáticamente.

# Python program to demonstrate
# __del__
  
  
class Example: 
    
    # Initializing
    def __init__(self): 
        print("Example Instance.")
  
    # Calling destructor
    def __del__(self): 
        print("Destructor called, Example deleted.") 
    
obj = Example() 
del obj 
Producción:

Example Instance.
Destructor called, Example deleted.

Nota: se llamó al destructor después de que finalizó el programa o cuando se eliminaron todas las referencias al objeto, es decir, cuando el recuento de referencias se vuelve cero, no cuando el objeto salió del alcance.

__Eliminar__

__delete__se utiliza para eliminar el atributo de una instancia, es decir, eliminar el valor del atributo presente en la clase propietaria de una instancia.

Nota: este método solo elimina el atributo que es un descriptor.

Sintaxis:

def __delete__(self, instance):
    body of delete
    .
    .

Ejemplo:

# Python program to demonstrate
# __delete__
  
  
class Example(object):
  
    # Initializing
    def __init__(self):
        print("Example Instance.")
  
    # Calling __delete__
    def __delete__(self, instance):
        print ("Deleted in Example object.")
  
  
# Creating object of Example
# class as an descriptor attribute
# of this class
class Foo(object):
    exp = Example()
  
# Driver's code
f = Foo()
del f.exp
Producción:

Example Instance.
Deleted in Example object.

Diferencia entre __delete y __del__

Ejemplo: Un ejemplo combinado de __del__y __delete__.

# Python program to demonstrate
# __del__ and __delete__
  
  
class Example(object):
  
    # Initializing
    def __init__(self):
        self.value = ''
  
    # deletes an attribute
    def __delete__(self, instance):
        print ("Inside __delete__")
          
    # Destructor
    def __del__(self):
        print("Inside __del__")
      
      
class Foo(object):
    exp = Example()
  
# Driver's code
f = Foo()
del f.exp

Producción:

Inside __delete__
Inside __del__

Publicación traducida automáticamente

Artículo escrito por HarshitaSahai y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *