pep 8 constants
Ethan Furman
ethan at stoneleaf.us
Fri Feb 27 12:34:11 EST 2009
Steve Holden wrote:
> Gabriel Genellina wrote:
>
>>En Tue, 24 Feb 2009 22:52:20 -0200, Ethan Furman <ethan at stoneleaf.us>
>>escribió:
>>
>>
>>>Steve Holden wrote:
>>>
>>>>Brian Allen Vanderburg II wrote:
>>>>
>>>>
>>>>>One idea to make constants possible would be to extend properties to be
>>>>>able to exist at the module level as well as the class level:
>>>>>
>>>>>@property
>>>>>def pi():
>>>>> return 3.14159.....
>>>>>
>>>>>print(pi) # prints 3.14159....
>>>>>pi=32 # Raise an error Cannot set attribute ...
>>>>>
>>>>
>>>> I don't understand why this would print 3.14159 ... instead of
>>>><function
>>>>__math__.pi>, or whatever.
>>>> property would clearly have to do something very different in module
>>>>scope in order to make this work.
>>>> regards
>>>> Steve
>>>
>>>--> class tester(object):
>>>... @property
>>>... def pi(self):
>>>... return 3.141596
>>>...
>>>--> testee = tester()
>>>--> testee.pi
>>>3.1415959999999998
>>>
>>>Looks like that's how property works, so the same behavior on a module
>>>level would do as Brian suggests.
>>
>>Note that:
>> - you defined the property inside the *class* tester
>> - then, you created an *instance* of such class
>> - you retrieve pi from the instance
>> - if you retrieve pi from the class (tester.pi), you get a property
>>object, not a float.
>> - if you directly attach the property to the instance, testee.pi
>>returns a property object, not a float.
>>Finally, consider that modules are instances of type `module`; all
>>modules are instances of the same type.
>>
>>How do you propose to make properties work at the module level?
>>
>
> Thanks, Gabriel. I was beginning to think there was something terribly
> obvious I had completely missed.
>
> regards
> Steve
Yes, Thanks, Gabriel!
You're extra comments made clarified the issue for me. Much appreciated.
~Ethan~
More information about the Python-list
mailing list