Class Factories in Python: How?

Alex cut_me_out at hotmail.com
Mon May 1 20:57:55 CEST 2000


> # A Nicer way? Is it possible?
> # class factory to specialize the above class given some new attributes
> # to use:
> def marshalstruct_factory(newattributes):
>     class newclass(marshalstruct):
> 	  attributes = newattributes
> 	  lookups = binstruct_lookup(attributes)
> 	  fieldcount = len(attributes)
>     return newclass
> 
> # fails, attributes = newattributes doesn't work, probably because the
> # above class scope doesn't admit the function parameters into its
> # scope.

If this is the main problem, there may be a way around it.  Could you do
something like this:

def marshalstruct_factory(newattributes):
    class newclass(marshalstruct):
	pass
    newclass.attributes = newattributes
    newclass.lookups = binstruct_lookup(attributes)
    newclass.fieldcount = len(attributes)
    return newclass

Alex.



More information about the Python-list mailing list