On 01/30/2013 05:53 PM, Larry Hastings wrote:
On 01/30/2013 04:45 PM, Steven D'Aprano wrote:
On 31/01/13 03:42, Larry Hastings wrote:
Also, I'm not sure there are any existing globals that we'd want to convert into properties.
How about this?
math.pi = 3
which really should give an exception.
(I'm sure there are many others.)
Well, hmm. The thing is, properties--at least the existing implementation with classes--doesn't mesh well with direct access via the dict. So, right now,
If we change math.pi to be a property it wouldn't be in the dict anymore. So that has the possibility of breaking code.
So make the property access the __dict__:
--> class Test(object): ... @property ... def pi(self): ... return self.__dict__['pi'] ... @pi.setter ... def pi(self, new_value): ... self.__dict__['pi'] = new_value ... --> t = Test() --> t <__main__.Test object at 0x7f165d689850> --> t.pi = 3.141596 --> t.pi 3.141596 --> t.__dict__['pi'] = 3 --> t.pi 3