I’m trying create an intermediate object to work with elsewhere that I can pass in to an sqlalchemy model for creation:
start with:
class IntermediateObj(object):
def __init__(self, raw):
self.raw = raw
self.sections = []
self.fields = []
self.elements = []
super(IntermediateObj, self).__init__()
def recurse(self, items):
for k,v in items.iteritems():
if isinstance(v, list):
getattr(self, k).append(v)
[self.recurse(i) for i in v]
else:
setattr(self, k, v)
pass to:
class MyClass(IntermediateObj, Base):
def __init__:(self, attribute=None):
self.attribute = attribute
super(MyClass, self).__init__
e.g.
ii = IntermediateObj(raw={'large':'nested_dictionary', sections=[{}, {}, {}]})
ii.recurse(ii.raw) #any help smoothing this bit over appreciated as well, but another question...
tada = MyClass(ii)
tada.sections
---> [] /// this should not be, it should correspond to ii.sections
Sections is empty where it should not be, so I don’t quite grasp inheritance here yet. This has to be a common question, but I have not found anything I could understand at this point and am just flailing around at various tactics. Any input appreciated on doing python class inheritance correctly.
I see you have accepted this as the best answer, and I felt bad about it cause it’s not really answered, so I made an update, as we described in the comments, now when an instance of MyClass receives an instance of IntermediateObj, it will call the constructor of the base class with the raw parameter of the passed object. Also recurse is called in IntermediateObj’s constructor, so it will copy the values at instantiation time: