[Tutor] Adding dynamic methods (was RE: Function assignment)
Zak Arntson
zak@harlekin-maus.com
Thu Jun 12 16:00:02 2003
Okay, for everyone following along, here's my current draft. It works!
###
import new
class PyFictObject:
def attach(self, func, name=None):
setattr(self,
name or func.__name__,
new.instancemethod(func, self, PyFictObject))
def msg(self, name, message):
def f(self):
return message
self.attach(f, name)
def get(self, name, *arg):
func = getattr(self, name, False)
if func:
if callable(func):
return func()
return func
return False
# setup our object
pipe = PyFictObject()
pipe.obj = ['pipe', 'bar']
pipe.adj = ['green', 'rusty']
pipe.msg('name', 'green pipe')
def desc(self):
return "A rusty green pipe."
pipe.attach(desc)
# test our object
print pipe.get('obj') # returns a list
print pipe.get('name') # returns a string
print pipe.get('desc') # returns a string
###
--
Zak Arntson
www.harlekin-maus.com - Games - Lots of 'em