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.
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']
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”.
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' >>>
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.