Chris Angelico <ros...@gmail.com>: > Yes, that's correct. The *descriptor* protocol is what allows > "foo.bar" to cause a function to be executed
That mechanism allows you to expose data fields in the API. If the implementation later changes, you can emulate the data fields. I must say, though, I have yet to run into a need for descriptors. > the *decorator* protocol is what lets you "tag" a function: i have yet to need that, either. I have *seen* a semi-useful decorator in code once (@contextlib.contextmanager) but still would prefer explicit dunder methods. Marko -- https://mail.python.org/mailman/listinfo/python-list