YouTip LogoYouTip

Python Func Delattr

## Python delattr() Function The `delattr()` function is a built-in Python utility used to dynamically delete an attribute from a specified object. It is the functional equivalent of using the `del` statement. For example, calling `delattr(x, 'foobar')` performs the exact same operation as executing `del x.foobar`. --- ## Syntax ```python delattr(object, name) ``` ### Parameters * **`object`**: The object from which you want to delete the attribute. This can be a class instance, a class itself, or any other user-defined object. * **`name`**: A string representing the name of the attribute you wish to delete. ### Return Value * **`None`**: The function modifies the object in place and does not return any value. --- ## Code Examples ### Example 1: Basic Usage with Class Attributes The following example demonstrates how to use `delattr()` to delete an attribute from a class definition, and how attempting to access the deleted attribute afterwards raises an `AttributeError`. ```python class Coordinate: x = 10 y = -5 z = 0 # Create an instance of the Coordinate class point1 = Coordinate() print('x =', point1.x) print('y =', point1.y) print('z =', point1.z) # Delete the 'z' attribute from the Coordinate class delattr(Coordinate, 'z') print('-- After deleting the z attribute --') print('x =', point1.x) print('y =', point1.y) # This will raise an AttributeError because 'z' no longer exists try: print('z =', point1.z) except AttributeError as e: print(f"Error: {e}") ``` **Output:** ```text x = 10 y = -5 z = 0 -- After deleting the z attribute -- x = 10 y = -5 Error: 'Coordinate' object has no attribute 'z' ``` --- ### Example 2: Deleting Instance Attributes You can also use `delattr()` to delete attributes that belong to a specific instance rather than the class itself. ```python class Person: def __init__(self, name, age): self.name = name self.age = age # Create an instance user = Person("Alice", 30) print(f"Before deletion: {user.__dict__}") # Delete the 'age' attribute from the instance delattr(user, 'age') print(f"After deletion: {user.__dict__}") # Verifying deletion print(hasattr(user, 'age')) # Output: False ``` **Output:** ```text Before deletion: {'name': 'Alice', 'age': 30} After deletion: {'name': 'Alice'} False ``` --- ## Key Considerations ### 1. `delattr()` vs. `del` While `del x.y` is the standard way to delete an attribute when you know its name at write-time, `delattr(x, 'y')` is highly useful when the attribute name is dynamic (e.g., stored in a variable or passed as an argument). ```python # Dynamic deletion attribute_to_remove = "temporary_data" delattr(my_object, attribute_to_remove) ``` ### 2. Handling Non-Existent Attributes If you attempt to delete an attribute that does not exist on the object, Python will raise an `AttributeError`. To prevent your program from crashing, you can check if the attribute exists first using `hasattr()`: ```python if hasattr(point1, 'z'): delattr(point1, 'z') else: print("Attribute 'z' does not exist.") ``` ### 3. Read-Only and Built-in Attributes You cannot use `delattr()` on read-only attributes or built-in objects (like lists, dictionaries, or strings) that do not allow attribute deletion. Doing so will result in a `TypeError` or `AttributeError`.
← Python Func MemoryviewPython Func Reload β†’