High Quality — Python 3 Deep Dive Part 4 Oop
Python 3.8+ introduced structural subtyping via Protocol :
If a class attribute defines __get__ , accessing obj.attr becomes AttributeClass.__get__(attr, obj, type(obj)) . python 3 deep dive part 4 oop high quality