problem calling parent's __init__ method

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Ryan Krauss

    problem calling parent's __init__ method

    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.__in it__(self, codelist, noout=noout, **kwargs)


    I get this error:

    <type 'exceptions.Typ eError'>: 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(obje ct):

    class InnerBlock(empt y_class):

    where

    class empty_class(obj ect):
    def __init__(self,_ d={},**kwargs):
    kwargs.update(_ d)
    self.__dict__=k wargs

    I still get the same error. Why doesn't this work?

    Thanks,

    Ryan
  • Peter Otten

    #2
    Re: problem calling parent's __init__ method

    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.__in it__(self, codelist, noout=noout, **kwargs)
    >
    >
    I get this error:
    >
    <type 'exceptions.Typ eError'>: 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(obje ct):
    >
    class InnerBlock(empt y_class):
    >
    where
    >
    class empty_class(obj ect):
    def __init__(self,_ d={},**kwargs):
    kwargs.update(_ d)
    self.__dict__=k wargs
    >
    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

    Comment

    Working...