hans at zephyrfalcon.org
Fri Aug 20 03:12:25 CEST 2004
Ivan Voras wrote:
> Is this possible:
> class C1:
> def somemethods(self):
> """methods do stuff, create member variables"""
> def f1():
> """function returns instances of C1, somewhat manipulated into
> specific states"""
> return C1()
> class C2(C1): # C2 derives from C1
> def othermethods(self):
> """new methods are introduced, but no new member variables (they
> work on existing ones)"""
> # So far, everything's ok. Now, i want to create instance of
> # C1 using f1:
> c = f1() # could be equal to "c=C1()", but not always...
> # ... and somehow "add" or "overlay" the additional methods
> # declared in C2 on the object "c". I tried this:
> c.othermethods() # fails here, is confused about what is 'self'
> While this is probably considered "strange", and it's certainly not good
> design style, I somehow feel it could be possible to do in python. Any
>>> class C1:
... def somemethods(self):
... print 'somemethods'
>>> def f1():
... return C1()
>>> class C2(C1):
... def othermethods(self):
... print 'othermethods'
>>> c = f1()
>>> import new
>>> c.othermethods = new.instancemethod(C2.othermethods.im_func, c, c.__class__)
Hans Nowak (hans at zephyrfalcon.org)
More information about the Python-list