Gabriel Genellina wrote: > En Tue, 24 Feb 2009 22:52:20 -0200, Ethan Furman <et...@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 -- Steve Holden +1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list