Georg Brandl wrote: > Martin v. Löwis schrieb: >> Anthony Baxter schrieb: >>>> and the "wrapper class" idea of Nick Coghlan: >>>> attrview(obj)[foo] >>> This also appeals - partly because it's not magic syntax <wink> >> I also like this. I would like to spell it attrs, and >> I think its specification is >> >> class attrs: >> def __init__(self, obj): >> self.obj = obj >> def __getitem__(self, name): >> return getattr(self.obj, name) >> def __setitem__(self, name, value): >> return setattr(self.obj, name, value) >> def __delitem__(self, name): >> return delattr(self, name) >> def __contains__(self, name): >> return hasattr(self, name) >> >> It's so easy people can include in their code for backwards >> compatibility; in Python 2.6, it could be a highly-efficient >> builtin (you still pay for the lookup of the name 'attrs', >> of course). > > I fear people will confuse vars() and attrs() then. > > Georg
Would it be possible for attrview to be a property? Something like... (Probably needs more than this to handle all cases.) class obj(object): def _attrview(self): return self.__dict__ attr = property(_attrview) If it was this simple we just do obj.__dict__[foo] in the first place. Right? I'm overlooking something obvious I think, but the spelling is nice. obj[foo] -> access content obj.foo -> access attribute directly obj.attr[foo] -> access attribute dynamically Ron _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com