I try to set two properties, "value" and "square" in the following code,
and arrange it in such way that setting one property also sets another
one and vice versa. But the code seems to get Python into infinite loop:
import math
class Squared2(object):
class Squared2(object):
self._internalval=val
self.square=pow(self._internalval,2)
def fgetvalue(self):
return self._internalval
def fsetvalue(self, val):
self._internalval=val
self.square=pow(self._internalval,2)
value = property(fgetvalue, fsetvalue)
def fgetsquare(self):
return self.square
def fsetsquare(self,s):
self.square = s
self.value = math.sqrt(self.square)
square = property(fgetsquare, fsetsquare)
a=Squared2(5)
File "<pyshell#11>", line 1, in <module>
a=Squared2(5)
File "<pyshell#10>", line 5, in __init__
self.square=pow(self._internalval,2)
File "<pyshell#10>", line 19, in fsetsquare
self.square = s
File "<pyshell#10>", line 19, in fsetsquare
self.square = s
File "<pyshell#10>", line 19, in fsetsquare
self.square = s
File "<pyshell#10>", line 19, in fsetsquare
self.square = s
File "<pyshell#10>", line 19, in fsetsquare
self.square = s
File "<pyshell#10>", line 19, in fsetsquare
...
Is there a way to achieve this goal of two mutually setting properties?