From: Karsten Wutzke on
Hello,

I'm new to Python so beware.

I have a hierarchical object structure which I iterate over (the
elements/classes of interest). I would like to apply the Visitor
pattern onto this object structure, so I must add an "accept" method
to every object (I'm interesting in) for the Visitor pattern to work.

Is there any Python-inbuilt way to dynamically add a method or do I
have to wrap each iterated object into a Decorator supplying the
accept method? The latter would mean having to rebuild the (part)
hierarchy with the Decorator objects before running the Visitor, which
I'd like to avoid.

Karsten
From: Karsten Wutzke on
Small correction: I probably have to add a method to a class, so that
every object instantiated not by me has the desired functionality.

Karsten
From: Tim Chase on
On 07/15/2010 06:45 AM, Karsten Wutzke wrote:
> Small correction: I probably have to add a method to a class, so that
> every object instantiated not by me has the desired functionality.

You mean like:

>>> class Foo:
.... def __init__(self, greeting):
.... self.greeting = greeting
....
>>> f = Foo("Hello")
>>> def greet(self, other):
.... print "%s, %s" % (self.greeting, other)
....
>>> Foo.greet = greet
>>> f.greet("world")
Hello, world


-tkc