newb question about @property
On Mon, Oct 2, 2017 at 9:47 AM, Bill <BILL_NOSPAM at whoknows.net> wrote:
> Stephan Houben wrote:
>> Op 2017-10-01, Bill schreef <BILL_NOSPAM at whoknows.net>:
>>> I watched an example on YouTube where someone wrote a simple descriptor
>>> ("@Time_it) to output the amount of time that it took ordinary functions
>>> to complete. To be honest, I AM interested in descriptors.
>> Are you sure you are not confusing deSCRIPTtors and deCORAtors here?
> Yet, you are absolutely correct! Thank you for clarifying! From your
> description, I can see that it was *decorators*, which drew my interest. It
> appears that *property* is perhaps both a decorator and a descriptor, at
> least when used as in the examples we have been discussing.
Yes, that's correct. The *descriptor* protocol is what allows
"foo.bar" to cause a function to be executed; the *decorator* protocol
is what lets you "tag" a function:
@property # this is being used as a decorator
foo = Foo(); print(foo.bar) # this uses descriptor protocol to find the function
Decorators are fairly straight-forward if you understand higher-order
functions. If you DON'T understand higher-order functions, look those
up first and get a solid understanding of what it means to pass a
function as a parameter to another function.