On Tue, Aug 9, 2016 at 5:32 PM, Eric Snow <ericsnowcurren...@gmail.com> wrote: > There are a number of options here for identifying attributes > in a definition and even auto-generating parts of the class (e.g. > __init__). Let's look at several (with various objectives): > > # currently (with comments for type info) > # using attribute annotations and a decorator (and PEP 520) > # using attribute annotations and a metaclass (and PEP 520) > # using one class decorator and PEP 520 and comments for type info > # using one class decorator and comments for type info > # using one class decorator (and PEP 468) and comments for type info > # using a class decorator for each attribute
Another approach that I've used in the past (along with a derivative): # using a non-data descriptor @as_namedtuple class Bee: """...""" name = Attr(str, 'Eric', doc='the bee's name') ancient_injury = Attr(bool, False) menagerie = Attr(bool, False) def half_a(self): ... # using a non-data descriptor along with PEP 487 class Bee(Namedtuple): """...""" name = Attr(str, 'Eric', doc='the bee's name') ancient_injury = Attr(bool, False) menagerie = Attr(bool, False) def half_a(self): ... While the descriptor gives you docstrings (a la property), I expect it isn't as static-analysis-friendly as the proposed variable annotations. -eric _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/