Ilias Lazaridis <[EMAIL PROTECTED]> wrote: ... > >> attr_accessor :name, :age ... > I would need this python "attr_accessor", to showcase that python is > capable to do it (even if the usage seems irrational/redundant).
The code for it was in one of my previous posts, in more than one form, but here it is again, more or less: def add_silly_attr_accessor_to_a_class(klass, name): def get(self, name): return getattr(self, '_'+name) def set(self, name, value): return setattr(self, '_'+name, value) setattr(klass, name, property(get, set)) to be used as in: add_silly_attr_accessor_to_a_class(Talker, 'name') add_silly_attr_accessor_to_a_class(Talker, 'age') outside of the body of Talker. If you'd rather have it used INSIDE the body of Talker, then: def make_silly_attr_accessor(name): def get(self, name): return getattr(self, '_'+name) def set(self, name, value): return setattr(self, '_'+name, value) return property(get, set) to be used as in: class Talker(object): age = make_silly_attr_accessor('age') name = make_silly_attr_accessor('name') Finally, you could choose to use a decorator syntax instead: def silly_attr_accessor_via_decorator(f): name = '_'+f.__name__ def get(self, name): return getattr(self, '_'+name) def set(self, name, value): return setattr(self, '_'+name, value) return property(get, set) to be used as in: class Talker(object): @silly_attr_accessor_via_decorator def name(): pass @silly_attr_accessor_via_decorator def age(): pass The latter is arguably a stretching of the concept of decorator, which is meant to be a nice syntax for a higher-order-function (taking a function as its argument and returning another function built by modifying the argument one) -- here we're only using the *name* of the "function" (name or age) and ignoring the object entirely (which is why in the example use I'm defining the ``functions'' as empty, using the no-op statement ``pass''). Still, some people believe there is mystical and magical power in having special syntax for something rather than using perfectly normal, general, and existing syntax for the purpose; such syntax-obsessed people will no doubt be more impressed by seeing the "special syntax" in use, than by ordinary, bread-and-butter closures, properties and assignment statements...;-) Alex -- http://mail.python.org/mailman/listinfo/python-list