Discovering Descriptors

This talk was pre­sent­ed at Py­Con CZ 2017 and Eu­roPy­thon 2017. Here are the ref­er­ences and re­sources for the pre­sen­ta­tion.

The code used for the talk, is avail­able here and ­con­tains some ex­pla­na­tions along with the ex­am­ples.



This is the record­ing of the talk pre­sent­ed at Eu­roPy­thon 2017.


To learn more about de­scrip­tors, you could check some of the fol­low­ing ref­er­ences, used as base for the talk:

  • Flu­ent Python - by Lu­ciano Ra­mal­ho: This book has a great ­cov­er of all top­ics of Python, and de­scrip­tors is no ex­cep­tion. Start­ing the ­sec­tion V of meta-pro­gram­ming, the chap­ter 20 con­tains a pro­found ­ex­pla­na­tion of the in­ter­nals of de­scrip­tors and how they work.
  • Python cook­book (3rd edi­tion) - David Bea­z­ley & Bri­an Jones: Con­tains great ex­am­ples of Python code, that help ex­plain­ing ad­vanced top­ic­s, such as de­scrip­tors, dec­o­ra­tors, and more.
  • Python de­scrip­tors How­To: The nicest thing about this guide is not on­ly that helps a lot on the un­der­stand­ing of de­scrip­tors, but al­so that here you can find equiv­a­lent im­ple­men­ta­tions of many built-in de­scrip­tors in Python, for ex­am­ple those for @prop­er­ty, @class­method, etc. This helps a lot on the un­der­stand­ing of the in­ter­nals of Python, and il­lus­trates a part of the code that is im­ple­ment­ed in C in CPython.
  • Python da­ta mod­el: has a ­sec­tion ex­plain­ing the meth­ods of the de­scrip­tor pro­to­col, and how they’re in­voked.
  • PEP-487 in­tro­duces __set_­name__.