pep 8 constants
MRAB
google at mrabarnett.plus.com
Sun Jan 18 14:32:20 EST 2009
Francesco Bochicchio wrote:
> On Wed, 14 Jan 2009 08:13:30 +0000, Steven D'Aprano wrote:
>
>
>> Absolutely. It's rather sad that I can do this:
>>
>> import math
>> math.pi = 3.0
>>
>> I like the ability to shoot myself in the foot, thank you very much, but
>> I should at least get a warning when I'm about to do so:
>>
>> math.PI = 3.0 # use God-like powers to change a constant
>>
>>
>
> Constants would be a nice addition in python, sure enough.
> But I'm not sure that this can be done without a run-time check every time
> the constant is used, and python is already slow enough. Maybe a check
> that is disabled when running with optimizing flags ?
>
> But I'm sure this discussion has been already made and the FINAL WORD has
> been already spoken.
>
>>> class Constants(object):
def __setattr__(self, key, value):
if key in self.__dict__:
raise ValueError("Can't change constant")
self.__dict__[key] = value
>>> c = Constants()
>>> c.PI = 3.0
>>> c.PI
3.0
>>> c.PI = 4.0
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
c.PI = 4.0
File "<pyshell#19>", line 4, in __setattr__
raise ValueError("Can't change constant")
ValueError: Can't change constant
More information about the Python-list
mailing list