On Mon, Oct 2, 2017 at 9:47 AM, Bill <[email protected]> wrote:
> Stephan Houben wrote:
>>
>> Op 2017-10-01, Bill schreef <[email protected]>:
>>>
>>> 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:
class Foo:
@property # this is being used as a decorator
def bar(self):
return 42
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.
ChrisA
--
https://mail.python.org/mailman/listinfo/python-list