Alex Martelli wrote: > Steven D'Aprano <[EMAIL PROTECTED]> wrote: >> class Record(object): >> __slots__ = ["x", "y", "z"] >> >> has a couple of major advantages over: >> >> class Record(object): >> pass >> >> aside from the micro-optimization that classes using __slots__ are faster >> and smaller than classes with __dict__. >> >> (1) The field names are explicit and self-documenting; >> (2) You can't accidentally assign to a mistyped field name without Python >> letting you know immediately. [snip] > If I had any real need for such things, I'd probably use a metaclass (or > class decorator) to also add a nice __repr__ function, etc...
Yep. That's what the recipe I posted [1] does. Given a class like:: class C(Record): __slots__ = 'x', 'y', 'z' it adds the most obvious __init__ and __repr__ methods. Raymond's NamedTuple recipe [2] has a similar effect, though the API is different. [1] http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/502237 [2] http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/500261 STeVe -- http://mail.python.org/mailman/listinfo/python-list