Lab 03: Descriptor Protocol
Overview
Step 1: The Descriptor Protocol
class Descriptor:
def __get__(self, obj, objtype=None):
print(f"__get__: obj={obj}, objtype={objtype}")
return 42
def __set__(self, obj, value):
print(f"__set__: value={value}")
def __delete__(self, obj):
print(f"__delete__")
class MyClass:
attr = Descriptor()
mc = MyClass()
_ = mc.attr # triggers __get__
mc.attr = 10 # triggers __set__
del mc.attr # triggers __delete__
# Class-level access
_ = MyClass.attr # __get__ with obj=NoneStep 2: Data vs Non-Data Descriptors
Step 3: __set_name__ — Automatic Name Binding
__set_name__ — Automatic Name BindingStep 4: Typed Descriptor Validation Framework
Step 5: property Internals
property InternalsStep 6: classmethod and staticmethod as Descriptors
classmethod and staticmethod as DescriptorsStep 7: __slots__ vs __dict__ Storage
__slots__ vs __dict__ StorageStep 8: Capstone — Full Validation Framework
Summary
Concept
Mechanism
Use Case
Last updated
