Ryan Krauss wrote: > I am trying to call a parent's __init__ method from the child's: > > class ArbitraryBlock(InnerBlock): > def __init__(self, codelist, noout=False, **kwargs): > InnerBlock.__init__(self, codelist, noout=noout, **kwargs) > > > I get this error: > > <type 'exceptions.TypeError'>: unbound method __init__() must be > called with InnerBlock instance as first argument (got ArbitraryBlock > instance instead) > > > I found a thread that talked about the parent and child being > different types, so I tried setting up the parent class 3 different > ways: > > class InnerBlock: > > class InnerBlock(object): > > class InnerBlock(empty_class): > > where > > class empty_class(object): > def __init__(self,_d={},**kwargs): > kwargs.update(_d) > self.__dict__=kwargs > > I still get the same error. Why doesn't this work?
For some reason you have two InnerBlock classes in your code. A demonstration: >>> class A(object): ... def __init__(self): pass ... >>> class B(A): ... def __init__(self): ... A.__init__(self) ... >>> B() <__main__.B object at 0x2b67aae02c90> >>> class A(object): ... def __init__(self): pass ... >>> B() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 3, in __init__ TypeError: unbound method __init__() must be called with A instance as first argument (got B instance instead) Are you perhaps importing your main script into your main script? Peter -- http://mail.python.org/mailman/listinfo/python-list