[Python-Dev] __slots__ and default values
Guido van Rossum
guido@python.org
Tue, 13 May 2003 09:57:46 -0400
> Was there a reason that __slots__ makes initialized
> variables read-only? It would be useful to have
> overridable default values (even if it entailed copying
> them into an instance's slots):
>
> class Pane(object):
> __slots__ = ('background', 'foreground', 'size', 'content')
> background = 'black'
> foreground = 'white'
> size = (80, 25)
>
> p = Pane()
> p.background = 'light blue' # override the default
> assert p.foreground == 'white' # other defaults still in-place
You can't do that. The class variable 'background' overrides the
descriptor created by __slots__. background now appears read-only
because there is no instance dict.
--Guido van Rossum (home page: http://www.python.org/~guido/)