Skip Montanaro wrote: > Guido> (2) Invent some other notation for setting > function attributes as > Guido> part of the function *body*, before the doc > string even. > > Guido> For (2) I am thinking aloud here: > > Guido> def foobar(self, arg): > Guido> @author: "Guido van Rossum" > Guido> @deprecated > Guido> pass > > It's a shame that there's no good way to define function > attributes already. > Aside from the fact that this is different than the other form of > "decoration", it's also different than setting attributes for classes. > > Rather than invent a unique syntax I'd prefer to either use a > decorator > function or suffer with tacking them on at the end: > > def foobar(self, arg): > pass > foobar.author = "Guido van Rossum" > foobar.deprecated = True Agreed. There are enough mechanisms to alter an object's attribute dict. I'd rather not introduce another one, preferring instead to stick to "object.attr = value"--in this example, "foobar.deprecated = True". Where that declaration goes is fungible. > Using the proposed decorator syntax with the decorator after > the arglist > with a little judicious indentation I can make it look sort > of like what > you're after: > > def foobar(self, arg) [attributes( > author = "Guido van Rossum" > deprecated = True > )]: > pass > > Another possibility would be to overload def: > > def foobar(self, arg): > def author = "Guido van Rossum" > def deprecated = True > pass I'd still prefer a dot. How about: def foobar(self, arg): def.author = "Guido van Rossum" def.deprecated = True pass ? However, the idea of putting such attributes at the same level as the rest of the function block is ugly to me--newbies are going to go mad the first few times, trying to figure out *when* such statements are evaluated. Such statements IMO need their own "container", whether that's a block: def foobar(self, arg): attributes: author = "Guido van Rossum" deprecated = True pass ...or a list: def foobar(self, arg) [attributes( author = "Guido van Rossum" deprecated = True)]: pass ...or within the declaration: def foobar(self, arg) having (author = "Guido van Rossum", deprecated = True): pass Robert Brewer MIS Amor Ministries fumanchu at amor.org
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4