On 8/5/20 11:11 AM, Jonathan Goble wrote:

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.

    --> from aenum import Constant

    --> class K(Constant):
    ...   a = 5
    ...   b = 'hello'
    ...

    --> K.a
    <K.a: 5>

    --> K.a == 5
    True

    --> K.a - 3
    2

    --> K.a = 9
    Traceback (most recent call last):
      ...
    AttributeError: cannot rebind constant <K.a>

    --> del K.a
    Traceback (most recent call last):
      ...
    AttributeError: cannot delete constant <K.a>

However, one can, of course:

    del K

There is only so much one can do.  ;-)

--
~Ethan~
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/VUZKCKX7CARMZI3BNDQRGA7U4HHDXDMP/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to