On Mon, 08 Oct 2007 15:15:36 +0200, Diez B. Roggisch wrote: >> Well, I've read the thread, and I've read the thread it links to, and >> for the life of me I'm still no clearer as to why __slots__ shouldn't >> be used except that: >> >> 1 Aahz and Guido say __slots__ are teh suxxor; >> >> 2 rumour (?) has it that __slots__ won't make it into Python 3.0; >> >> 3 inheritance from classes using __slots__ doesn't inherit the slot- >> nature of the superclass. >> >> >> Point 1 is never to be lightly dismissed, but on the other hand Guido >> doesn't like reduce(), and I'm allergic to "Cos I Said So" arguments. >> >> History is full of things which were invented for one purpose being >> used for something else. So, that being the case, suppose I accept that >> using __slots__ is not the best way of solving the problem, and that >> people of the skill and experience of Guido and Aahz will roll their >> eyes and snicker at me. >> >> But is there actually anything *harmful* that can happen if I use >> __slots__? > > Point 3 clearly is harmful.
No, it is DIFFERENT, not harmful. At worst, it's a "gotcha" -- a really well-documented gotcha. > As is the fact that __slots__ gives you > troubles if you e.g. pass objects to code that tries to set arbitrary > attributes on an object. You mean like this? >>> x = 1 >>> x.label = "foo" Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'int' object has no attribute 'label' I guess that means ints and floats and strings and tuples and lists are all harmful too, yes? > The question is: what does a slot buy you for this kind of problem? Simplicity and explicitness. -- Steven. -- http://mail.python.org/mailman/listinfo/python-list