Deciding inheritance at instantiation?

Nobody nobody at nowhere.com
Fri Aug 3 19:52:53 EDT 2012


On Fri, 03 Aug 2012 13:48:08 -0700, Tobiah wrote:

> I have a bunch of classes from another library (the html helpers
> from web2py).  There are certain methods that I'd like to add to
> every one of them.  So I'd like to put those methods in a class,
> and pass the parent at the time of instantiation.  Web2py has
> a FORM class for instance.  I'd like to go:
> 
> 	my_element = html_factory(FORM)
> 
> Then my_element would be an instance of my class, and also
> a child of FORM.

You can use type() to create classes dynamically. E.g.:

	class my_base_class(object):
	    # extra methods

	subclasses = {}

	def html_factory(cls, *args, **kwargs):
	    name = "my_" + cls.__name__
	    if name not in subclasses:
	        subclasses[name] = type(name, (cls, my_base_class), {})
	    return subclasses[name](*args, **kwargs)




More information about the Python-list mailing list