dictionary with object's method as thier items
noro
amit.man at gmail.com
Wed Aug 30 12:03:51 EDT 2006
great that is what i looked for.
>>> class C:
> ... def function(self, arg):
> ... print arg
> ...
> >>> obj = C()
> >>> d = C.__dict__
> >>> d['function'](obj, 42)
> 42
this allows me the access the same method in a range of objects.
i can put all the functions i need in a dictionary as items, and the
vars as keys, and then call them for all objects that belong to a
class..
something like this
----------------------------------------------------
class C:
#object vars
self.my_voice
self.my_size
self.my_feel
# a method that do somthing, that might give different result for
different objects
getVoice(self):
return(self.my_voice+'WOW')
getSize(self):
return(self.my_size*100)
getFeel(self):
return(self.my_feel)
#create the dictionary with a reference to the class methode
dic={'voice':C.getVoice,'size':C.getSize,'feel':C.getFeel}
# create array of 10 different objects
cArray = []
for i in range(10)
cArray.append(C())
cArray[0].my_size=i
# choose the function you need, and get the result
choice=WHAT EVER KEY (e.g 'size')
for i in range(10)
print dic[choice](cArray[i])
#or even print all the values of all objects. if i ever want to print
diffenet valuse i only need
# to change the dictionary, nothing else...
for choice in dic:
for i in range(10)
print dic[choice](cArray[i])
---------------------------------------------------------------
i totaly forget about the "self" argument in every method...
a. is the main reason "self is there, or is it only a side effect?
b. what do you think about this code style? it is not very OOP, but i
cant see how one can do it other wise, and be able to control the
function printed out with something as easy as dictionary..
Georg Brandl wrote:
> noro wrote:
> > Is it possible to do the following:
> >
> > for a certain class:
> >
> > ----------------------------
> > class C:
> >
> > def func1(self):
> > pass
> > def func2(self):
> > pass
> > def func4(self):
> > pass
> >
> > obj=C()
> > ----------------------------
> >
> > by some way create a dictionary that look somthing like that:
> >
> > d= {'function one': <reference to C.func1()>, \
> > 'function two': <reference to C.func2()>, \
> > 'function three': <reference to C.func3()>}
>
> Perhaps this:
>
> >>> class C:
> ... def function(self, arg):
> ... print arg
> ...
> >>> obj = C()
> >>> d = C.__dict__
> >>> d['function'](obj, 42)
> 42
> >>>
>
>
> Georg
More information about the Python-list
mailing list