Dynamic subclassing ?
Daniel Nogradi
nogradi at gmail.com
Sat May 12 12:38:50 EDT 2007
> I've got an instance of a class, ex :
>
> b=gtk.Button()
>
> I'd like to add methods and attributes to my instance "b".
> I know it's possible by hacking "b" with setattr() methods. But i'd
> like to do it with inheritance, a kind of "dynamic subclassing",
> without subclassing the class, only this instance "b" !
>
> In fact, i've got my instance "b", and another class "MoreMethods"
>
> class MoreMethods:
> def sayHello(self):
> print "hello"
>
> How could i write ...
>
> "b = b + MoreMethods"
>
> so "b" will continue to be a gtk.Button, + methods/attributs of
> MoreMethods (it's what i call "dynamic inheritance") ...so, things
> like this should work :
>
> - b.set_label("k")
> - b.sayHello()
>
> I can't find the trick, but i'm pretty sure it's possible in an easy
> way.
How about:
class MoreMethods:
def sayHello(self):
print "hello"
class myButton( gtk.Button, MoreMethods ):
pass
b = myButton( )
isinstance( b, gtk.Button ) # True
b.sayHello( ) # "hello"
Daniel
More information about the Python-list
mailing list