with arbitrary get and set handler methodsand the basis for other tools such as properties and slots the tools in the first of these bullets are available in all pythons the last three bulletstools are available in python and new-style classes in --they first appeared in python along with many of the other advanced tools of such as slots and super we briefly met the first and third of these in and respectivelythe second and fourth are largely new topics we'll explore in full here as we'll seeall four techniques share goals to some degreeand it' usually possible to code given problem using any one of them they do differ in some important waysthough for examplethe last two techniques listed here apply to specific attributeswhereas the first two are generic enough to be used by delegation-based proxy classes that must route arbitrary attributes to wrapped objects as we'll seeall four schemes also differ in both complexity and aestheticsin ways you must see in action to judge for yourself besides studying the specifics behind the four attribute interception techniques listed in this sectionthis also presents an opportunity to explore larger programs than we've seen elsewhere in this book the cardholder case study at the endfor exampleshould serve as self-study example of larger classes in action we'll also be using some of the techniques outlined here in the next to code decoratorsso be sure you have at least general understanding of these topics before you move on properties the property protocol allows us to route specific attribute' getsetand delete operations to functions or methods we provideenabling us to insert code to be run automatically on attribute accessintercept attribute deletionsand provide documentation for the attributes if desired properties are created with the property built-in and are assigned to class attributesjust like method functions accordinglythey are inherited by subclasses and instanceslike any other class attributes their access-interception functions are provided with the self instance argumentwhich grants access to state information and class attributes available on the subject instance property manages singlespecific attributealthough it can' catch all attribute accesses genericallyit allows us to control both fetch and assignment accesses and enables us to change an attribute from simple data to computation freelywithout breaking existing code as we'll seeproperties are strongly related to descriptorsin factthey are essentially restricted form of them properties