On Mon, Apr 29, 2019 at 11:25:51PM +0530, Arup Rakshit wrote: > Now I am not getting how the __set__() method from NonBlank is being > called inside the __init__() method. Looks like some magic is going on > under the hood. Can anyone please explain this how self.name and > self.email assignment is called the __set__ from NonBlank? What is the > name of this concept?
I haven't read your code in detail, but it sounds like the Descriptor protocol. Descriptors are used "under the hood" by Python to implement methods, classmethod, staticmethod and property, among others, and are considered an advanced technique (only slightly less advanced than metaclasses). https://docs.python.org/3/howto/descriptor.html If you are *not* intentionally trying to write a custom descriptor, you should not use a __set__ method. (Perhaps you meant __setitem__?) In general, you should treat all dunder (Double UNDERscore) methods as private to Python, and only implement those that you need. Don't use them for your own purposes. -- Steven _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor