A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2003-May/035578.html below:

[Python-Dev] __slots__ and default values

[Python-Dev] __slots__ and default valuesKevin Jacobs jacobs@penguin.theopalgroup.com
Tue, 13 May 2003 10:07:45 -0400 (EDT)
On Tue, 13 May 2003, Raymond Hettinger wrote:
> 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

Those attributes are read-only, because there is a name collision between
the slot descriptors for 'background' and 'foreground', so the class favors
the class variables.  Thus, no slots are allocated for 'background' and
'foreground', so the instance, not having an instance dictionary correctly
reports that those attributes are indeed read-only.

Also, slots are not automatically initialized from class variables, though
one can easily write a metaclass to do so.  (Actually, it is only easy for a
first approximation, it is actually quite tricky to get 100% correct.)

-Kevin

-- 
--
Kevin Jacobs
The OPAL Group - Enterprise Systems Architect
Voice: (216) 986-0710 x 19         E-mail: jacobs@theopalgroup.com
Fax:   (216) 986-0714              WWW:    http://www.theopalgroup.com




RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4