How to set a class inheritance at instance creation?

Ramashish Baranwal ramashish.lists at gmail.com
Tue May 29 13:41:53 EDT 2007


On May 29, 8:52 pm, glomde <tbr... at yahoo.com> wrote:
> Hi I wonder if you can set what subclass a class should
> have at instance creation.
>
> The problem is that I have something like:
>
> class CoreLang():
>     def AssignVar(self, var, value):
>          pass
>
> class Lang1(CoreLang):
>      def AssignVar(self, var, value):
>           return var, "=", value
>
> class Lang2(CoreLang):
>      def AssignVar(self, var, value):
>           return var, "<=", value
>
> class WriteStruct():
>      def Generate(self, vars):
>         for var in vars:
>              print self.AssignVar()
>
> The problem is that I want  WriteStruct to sometimes be a subclass of
> Lang1 and sometimes
> of Lang2.
> In the above example I could but the Generate Method in CoreLang. But
> in my real
> example I also want to able to subclass WriteStruct to be able to easy
> customize WriteStruct.
> Which I wouldnt be able to do if it was a method in CoreLang.
>
> So in code I would like to write something like:
>
> WriteStruct(Lang1).Generate(vars)

class WriteStruct:
    def __init__(self, SubClass):
        self._sub = SubClass()
    def Generate(self, vars):
        for var in vars:
            print self._sub.AssignVar()

> Even better would be that if I in the Lang1 class could
> just do WriteStruct().Generate(vars) and Lang1 class would
> magically make WriteStruct a subclass of itself.
>

I don't think I understood what you want here.

Ram




More information about the Python-list mailing list