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