On 10/8/13 6:13 AM, Marco Buttu wrote:
In the following case:
>>> class Foo:
... _Foo__a = 100
... __a = 33
...
>>> Foo._Foo__a
33
I think this behavior, for a user who does not know the convention,
could be a surprise. Should be raising an exception (in order to
inform the user the transformation of the name __a have been replaced
an existing name) a possible --explicit-- alternative?
You also get a "problem" if you do this:
>>> class Foo:
... a = 100
... a = 33
...
>>> Foo.a
33
Or for that matter:
>>> a = 100
>>> a = 33
>>> a
33
There are lots of ways to change what value a name refers to, it's not
an error to reassign names.
Also, as Terry mentions, no one has ever assigned the two names you
show, so why try to warn about it?
--Ned.
--
https://mail.python.org/mailman/listinfo/python-list