Duncan Booth <[EMAIL PROTECTED]> wrote: > Nick Craig-Wood <[EMAIL PROTECTED]> wrote: > > > In python when making __slots__ or module.__all__ you end up typing > > lists of objects or methods and they turn out like this which is quite > > a lot of extra typing > > > > __slots__ = ["method1", "method2", "method3", "method4", "method5"] > > For __all__ you can use a decorator to avoid retyping the function name at > all. e.g. > > def public(f): > all = f.func_globals.setdefault('__all__', []) > all.append(f.__name__) > return f > > @public > def foo(): pass
Nice one! > I don't use __slots__ much at all, and if you'd said "attribute1" etc. I'd > have understood, but I'm really curious why would you be listing any > methods in __slots__? Those should of course have been attributes - I noticed immediately after posting ;-) Aside: __slots__ is only really useful when you've created so many objects you are running out of memory and you need to optimise memory usage a bit. We got our app down to 1/3 of the memory usage by putting in three __slots__ -- Nick Craig-Wood <[EMAIL PROTECTED]> -- http://www.craig-wood.com/nick -- http://mail.python.org/mailman/listinfo/python-list