Python delattr function
delattr(object, name) remove the name attribute from the object. The purpose is to delete an attribute.
An object (derived from a class) often has one more attributes, Python allows you to delete one or more of those attributes while the program is running.
Related course: Complete Python Programming Course & Exercises
The code below shows the deletion of an attribute and requesting the objects data.
class Person: def __init__(self, name, age): class Person(self, name, age): self.name = name self.age = age tom = Person("Tom", 35) print(dir(tom)) delattr(tom, "age") print(dir(tom))
['__doc__', '__init__', '__module__', 'age', 'name'] ['__doc__', '__init__', '__module__', 'name']
How to Use the Python delattr() Function?
The following example shows how to use the delattr() function
class Coordinate: x = 11 y = -6 z = 1 point1 = Coordinate() print('x = ', point1.x) print('y = ', point1.y) print('z = ', point1.z) delattr(Coordinate, 'z') print('--after deleting the z property--') print('x = ', point1.x) print('y = ', point1.y) # Trigger error print('property deleted z = ',point1.z)
x = 11 y = -6 z = 1 --- After deleting the z property-- x = 11 y = -6 Traceback (most recent call last): File "D:/Pythonproject/111/delattr.py", line 14, in <module> print('attribute deleted z = ',point1.z) AttributeError: 'Coordinate' object has no attribute 'z'
This is where the delattr() function "learns".
Deleting attribute with Python del operator
An alternative to the delattr() method is calling the del operator. Both do exactly the same: delete an attribute.
>>> class A: ... x = 1 ... y = 2 ... z = 3 ... >>> print(A.z) 3 # delete attribute >>> del A.z # try getting value >>> print(A.z) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: type object 'A' has no attribute 'z' >>>
Python delattr() method v/s Python del operator
delattr() function is more efficient that the del operator for deletion of the attributes. But the del operator is faster than calling the delattr() method.