Ethan Furman a écrit :
Steve Holden wrote:
Brian Allen Vanderburg II wrote:

(snip)
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.


--> 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.

s/module/instance/

At runtime, modules are instances of the module type - so 'module-level' names are really instance attributes of the module instance -, and the descriptor protocol is only invoked for class attributes.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to