[Python-Dev] method decorators (PEP 318)
Bob Ippolito
bob at redivi.com
Fri Mar 26 11:18:13 EST 2004
On Mar 26, 2004, at 11:08 AM, Jack Diederich wrote:
> On Fri, Mar 26, 2004 at 07:10:34AM -0800, Guido van Rossum wrote:
>> We came to an interesting conclusion (which Robert had anticipated):
>> there are two quite different groups of use cases.
>>
>> The other group of use cases merely attaches extra bits of metadata to
>> the method, without changing its usage. That is what most C# and Java
>> decorators are used for.
> I've posted some examples in the 318 threads of both kinds,
> the function decorators I use tend to change behavior and
> the class decorators I use tend to be meta-markup.
>
> For class decorators I currently use a work around w/ metaclasses,
> I don't decorate functions much so I just do it the old fashioned way.
>
>> So, anyway, here's a new suggestion (inspired by Robert's proposal):
>> (2) Invent some other notation for setting function attributes as part
>> of the function *body*, before the doc string even.
>>
>> For (2) I am thinking aloud here:
>>
>> def foobar(self, arg):
>> @author: "Guido van Rossum"
>> @deprecated
>> pass
>
> I'm agnostic on '@' but this looks like pydoc markup to me, what about
>
> def foobar(self, arg):
> @author = "Guido van Rossum"
> @deprecated = True
>
> People will also want to access these, so also consider how this will
> read:
>
> def foobar(self, arg):
> @author = "Guido"
> @email = @author.lower() + '@python.org' # contrived example
>
> I'd be a little worried that new users from other languages would start
> using '@' as a synonym for 'this' in strange ways. Nothing that can't
> be remedied with a clue bat.
Would we call that Rython or Puby?
FWIW, I agree with PJE. I want one syntax to rule them all, I see no
need to use two, even though there are different use cases. Clearly we
use foo[bar] syntax for different things depending on what foo is, and
I haven't seen any complaints about that.
-bob
More information about the Python-Dev
mailing list