On 29 Maj, 19:20, Ramashish Baranwal <[EMAIL PROTECTED]> wrote: > On May 29, 8:52 pm, glomde <[EMAIL PROTECTED]> 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 -- http://mail.python.org/mailman/listinfo/python-list