M
michael
Hi,
below is a snipplet that could be seen as a part of a spreadsheet with
getter and setter properties and a way how to dynamically insert
function to be used when setting the value of a "cell" instance
import new
import inspect
class Cell (object):
def __init__ (self, initialvalue = 0):
self._func = None
self.__value = initialvalue
def setvalue (self, newvalue):
if self._func:
self.__value = self._recalculate (newvalue)
else:
self.__value = newvalue
def getvalue (self):
return self.__value
def _recalculate (self, value):
ret_value = self._func (value)
return ret_value
def delvalue (self):
del self.__value
value = property(getvalue, setvalue, delvalue, "I'm the 'value'
property.")
def curry(self, func, *args):
self._func = new.function(func.func_code, func.func_globals,
argdefs=args)
func = property(curry, "I'm the 'func' property.")
def func (value, firstcell, secondcell):
return value + firstcell.value + secondcell.value
cell0 = Cell (10)
cell1 = Cell (20)
curriedcell = Cell (100)
print "uncurried initial %d " % (curriedcell.value)
curriedcell.value = 60
print "uncurried set %d " % (curriedcell.value)
curriedcell.curry (func, cell0, cell1)
curriedcell.value = 62
print "curried set %d " % (curriedcell.value)
Is there a better way to do this or am I totally on the wrong way ?
Regards
Michael
below is a snipplet that could be seen as a part of a spreadsheet with
getter and setter properties and a way how to dynamically insert
function to be used when setting the value of a "cell" instance
import new
import inspect
class Cell (object):
def __init__ (self, initialvalue = 0):
self._func = None
self.__value = initialvalue
def setvalue (self, newvalue):
if self._func:
self.__value = self._recalculate (newvalue)
else:
self.__value = newvalue
def getvalue (self):
return self.__value
def _recalculate (self, value):
ret_value = self._func (value)
return ret_value
def delvalue (self):
del self.__value
value = property(getvalue, setvalue, delvalue, "I'm the 'value'
property.")
def curry(self, func, *args):
self._func = new.function(func.func_code, func.func_globals,
argdefs=args)
func = property(curry, "I'm the 'func' property.")
def func (value, firstcell, secondcell):
return value + firstcell.value + secondcell.value
cell0 = Cell (10)
cell1 = Cell (20)
curriedcell = Cell (100)
print "uncurried initial %d " % (curriedcell.value)
curriedcell.value = 60
print "uncurried set %d " % (curriedcell.value)
curriedcell.curry (func, cell0, cell1)
curriedcell.value = 62
print "curried set %d " % (curriedcell.value)
Is there a better way to do this or am I totally on the wrong way ?
Regards
Michael