[Python-Dev] __slots__ and default values
Raymond Hettinger
Raymond Hettinger" <python@rcn.com
Tue, 13 May 2003 09:23:49 -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
Raymond Hettinger
---------------------------
>>> class A(object):
__slots__ = ('x',)
x = 1
>>> class B(object):
__slots__ = ('x',)
>>> A().x = 2
Traceback (most recent call last):
File "<pyshell#6>", line 1, in ?
A().x = 2
AttributeError: 'A' object attribute 'x' is read-only
>>> B().x = 2