|
|
|||||||||
|
|||||||||
| |||||||||
|
|
|
| |||||||||
![]() |
|
|
«
Previous Thread
|
Next Thread
»
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
#1
|
|||
|
|||
|
list of functions
This may seem like an odd requirement, but I would like to declare a class with one of its methods definable at instantiation. So that for instance I might have the following
Code:
class Func:
numargs = 0
rettype = None
function = None
def __init__(self, numargs, rettype, function):
self.numargs = numargs
self.rettype = rettype
self.function = function
cos = Func(1,'float', 'return math.cos(arg1)')
sin = Func(1,'float', 'return math.sin(arg1)')
print cos.function(0) # this should output 1
Does anyone know any way to make something like this work? The reason I need the class to be like this is that I want to maintain a list of functions along with certain characteristics and be able to call each one. I would also like to be able to dynamically add to the list. I could hardcode all the functions into the program and hardcode a list of the functions with parameters but that does not allow me to add functions on the fly. Any pointers would be greatly appreciated |
|
#2
|
||||
|
||||
|
I've tried to stay as close to your example as possible in this example but usually you would use __setattr__ method for this kind of thing; this lets you do things like f.x = value
Code:
>>> class Foo: ... def __init__(self, *args): ... for each in args: ... setattr(self, each.func_name, each) ... >>> def foo(x): ... return x ... >>> def bar(): ... print 'Bar!!!' ... >>> f = Foo(foo, bar) >>> f.foo(True) True >>> f.bar() Bar!!! >>> Sorted . As you can see, you can now add functions to your class instance when you initiate it.You can find a simple example of using __setattr__ in the Python Cookbook: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65207 Hope this helps, Mark. |
![]() |
| Viewing: Dev Shed Forums > Programming Languages > Python Programming > list of functions |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|
|
|