type checking table shows two methods which are used for type checkingtable type checking method result __instancecheck__(clsobjectisinstance(objectcls__subclasscheck__(clssubissubclass(subclsattribute access table shows the methods which are used to access the attribute using dot operator method __getattribute__(selfname__getattr__(selfname__setattr__(selfnamevalue__delattr__(selfnametable attribute access description returns attribute self name returns attribute self name if not found through normal attribute lookup or raise error sets value of the attribute delete the attribute notewhenever an attribute is accessedthen __getattribute__ is invoked if attribute is not foundthen __getattr__ is invoked thedefault behavior of __getattr__ is to raise 'attributeerrordescriptors subtle aspect of attribute manipulation is that sometimes the attributes of an object are wrapped with an extra layer of logic with getset and delete operations this can be achieved with descriptors with three options which are listed in table table shows the methods which are used to table special methods for descriptor objects method description __get__(selfinstanceclsreturn the attribute value or raise error __set__(selfinstancevalueset the attribute to value __delete__(selfinstancedelete the attribute sequence and mapping methods table shows the methods which are used to emulate the sequences and mapping objects table methods for sequences and mappings method description __len__(selfreturns length of self __getitem__(selfkeyreturns self[key__setitem__(selfkeyvalue sets self[key]=value __delitem__(selfkeydeletes self[key__contains__(selfobjreturns true if obj is in self special methods