" And Python can't do that, and that's probably a good thing." 

Johnathan, you are right, I emailed this list a year or so ago with a way to overload assignment and lookup (i.e. what happens when you >>> a) and it was discussed for a while, but ultimately there were reasons (that I largely agree with) why that would be problematic in python. The title was  "A proposal (and implementation) to add assignment and LOAD overloading" for anyone wanting to read the reasoning.

On Wed, Aug 5, 2020 at 2:13 PM Jonathan Goble <> wrote:
On Wed, Aug 5, 2020 at 2:03 PM Ricky Teachey <> wrote:

And btw this works: 

>>> class const(int):
...     def __new__(cls, name, val):
...         obj = super().__new__(cls, val)
... = name
...         return obj
...     def about(self):
...         print(, '=', self)
>>> a = const('a', 5)
>>> a
>>> a.about()
a = 5

That's literally useless, because after running that there is nothing stopping you from doing:

>>> a = 10

or even:

>>> a = "python has no constants"

And now a has a value different from 5.

There is nothing even remotely resembling const-ness to that class. In order to get const-ness, you would need the ability to overload assignments, like C++ can do. And Python can't do that, and that's probably a good thing.
Python-ideas mailing list --
To unsubscribe send an email to
Message archived at
Code of Conduct:

Nate Lust, PhD.
Astrophysics Dept.
Princeton University