Passing source code to __init__ to override method dynamically(Table driven subclassing)

Pettersen, Bjorn S BjornPettersen at fairisaac.com
Thu Nov 20 20:10:10 EST 2003


> From: Ian Sparks [mailto:Ian.Sparks at etrials.com] 
>  
> I want to create specialized instances of a base class 
> without declaring descendant classes.
> 
> Instead, I want to do the specialization by passing 
> source-code to the constructor of the base-class. This way I 
> can make my program table-driven.

At this point stop and ask yourself why:

 - being table driven is a good thing?
 - having a common base class is useful?

> Here's my working (but sucky) code :
[..]

# I belive this is equivalent (untested).

import new
code = """ ... """
x = new.function(compile(code,"<string>",'exec'), globals())

> Any advice?

You're being too clever... or not clever enough <wink>. I have a feeling
you might be looking for the new import machinery...

-- bjorn

Designing your classes AS CLASSES rather than as bunches of
vaguely related snippets of source would undoubtedly be a
far better way to proceed.
  -- Alex Martelli





More information about the Python-list mailing list