problem calling parent's __init__ method
Peter Otten
__peter__ at web.de
Thu Aug 7 11:36:25 EDT 2008
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
More information about the Python-list
mailing list