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/2008-June/080175.html below:

[Python-Dev] Assignment to None

[Python-Dev] Assignment to NoneTerry Reedy tjreedy at udel.edu
Mon Jun 9 21:22:39 CEST 2008
"Tony Nelson" <tonynelson at georgeanelson.com> wrote in message 
news:p04330107c4730af274e7@[192.168.123.162]...
| At 4:46 PM +0100 6/9/08, Michael Foord wrote:
| Or perhaps CPython should just stop trying to detect this at compile 
time.
| Note that while assignment to ".None" is not allowed, setattr(foo, 
"None",
| 1) then referencing ".None" is allowed.
|
| >>> f.None = 1
| SyntaxError: assignment to None
| >>> f.None
| Traceback (most recent call last):
|  File "<stdin>", line 1, in ?
| AttributeError: 'Foo' object has no attribute 'None'
| >>> setattr(f, 'None', 1)
| > f.None
| 1

I was a little surprised by this.  ISTM that f.None should consistently 
work or not work both for getting and setting.  The last result could be 
considered a bug rusulting from getting disabling depending on None not 
being set, but having a backdoor that does allow it to be set.

I recently read someone (Guido?) saying that a language should start 
'strict' because it is much easier to allow something new than disallow 
something old.  Allowing 'None' and possibly other keywords as attributes 
will not break code (that does not depend on the exceptions).   But I 
presume there was some thought that the restriction might prevent buggy 
code.

At the global level, the subversion does not work:
>>> globals()['None'] = 'ha'
>>> None
>>> dir()
['None', '__builtins__', '__doc__', '__name__', '__package__']
>>> globals()['None']
'ha'

tjr



More information about the Python-Dev mailing list

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