Hello From python version 3.6, there is a useful new method __set_name__ which could be implemented in descriptors.
This method is called after a descriptor is instantiated in a class. Parameter "name" is filled with the name of the attribute refering to the descriptor in the class Here is an example: class Descriptor: def __set_name__(self, owner, name): print(name) class A: value = Descriptor() value ## produced by print in Descriptor ----------------- But I discovered that __set_name__ is not called immediately after the execution of line "value = Descriptor()" but after all class code execution ... Here is an other example: class Descriptor: def __set_name__(self, owner, name): print("From Descriptor's method __set_name__: ", name) class Test: aaa = Descriptor() print("From class Test") From class Test From Descriptor's method __set_name__: aaa >>> As you see, the print from __set_name__ occurs AFTER the print from the class, I think every body was expecting the print from __set_name__ before. It is annoying in some real life, when one descriptor's method is a decorator and you write things like: class Temperature: def __init__(self): self.celsius= 0 fahrenheit = my_property() @fahrenheit.getter def fahrenheit(self): return 1.8*self.celsius+ 32 @fahrenheit.setter def fahrenheit(self, value): self.celsius= (value -32)/1.8 and fahrenheit.getter is expecting an attribute in fahrenheit which has not been set yet, it will be after all Temperature class code execution ... -- https://mail.python.org/mailman/listinfo/python-list