How to set a class inheritance at instance creation?
glomde
tbrkic at yahoo.com
Tue May 29 13:38:57 EDT 2007
On 29 Maj, 19:20, Ramashish Baranwal <ramashish.li... at gmail.com>
wrote:
> 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()
>
> This does what you want but isn't inheritance.
This would work I think. Thanks.
>
> > 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.
>
I just dont want to pass the class in the instancecreation.
Somhehow in my:
class Lang1(CoreLang):
def Function(self):
WriteStruct().Generate()
Then somehow this WriteStruct should magically know that has been
instantiated in Lang1.
But this is not really needed. Just wondered if it was possible.
> Ram
More information about the Python-list
mailing list