4. Descriptor Protocols

These examples demonstrate how Python's descriptor protocol (__get__, __set__, and __set_name__) allows fine-grained control over attribute access and modification.

1. Basic Descriptor Example

Copy

class Descriptor:
    def __get__(self, instance, owner):
        print("Getting value")
        return instance._value
    
    def __set__(self, instance, value):
        print("Setting value")
        instance._value = value

class MyClass:
    attribute = Descriptor()

obj = MyClass()
obj.attribute = 42  # Setting value
print(obj.attribute)  # Getting value, Output: 42

2. Read-Only Descriptor

Copy


3. Descriptor with Validation

Copy


4. Non-Data Descriptor

Copy


5. Descriptor in Class Variables

Copy


6. Combining __get__ and __set__

Copy


7. Tracking Access with a Descriptor

Copy


8. Descriptor to Control Multiple Attributes

Copy


9. Using a Descriptor for Logging

Copy


10. Descriptor with Property-Like Behavior

Copy


Last updated