If what you want is to insert a method into an
instance, look at new.instancemethod.

John Roth

"michael" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED]
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

-- http://mail.python.org/mailman/listinfo/python-list

Reply via email to