This is a very old topic, but here is a trick for single inheritance. (The 
problem you allude to isn't restricted to multiple inheritance).

Any class with a single parent simply defines this function.


    def mySuper(self) : 
        return super(self.__class__, self)
      
And then any parent function be referenced like
    self.mySuper().foo()

This includes __init__.

You can read more here.

http://atlee.ca/blog/posts/blog20081121python-reload-danger-here-be-dragons.html


On Thursday, March 21, 2002 2:03:23 PM UTC-7, Marc wrote:
> I have classes defined in different files and would like to inherit
> from a class in file A.py for a class in file B.py but am running into
> problems.  I'm using Python 1.5.2 on Windows NT
> 
> Here's a specific example:
> 
> ************************
> file cbase01.py:
> 
> class CBase:
> 
>     def __init__(self):
>         self.cclass = None
>         print "cbase"
> 
> class CImStream(CBase):
> 
>     def __init(self):
>         CBase.__init__(self)
>         print "CImStream"
> 
> *************************
> in file wrappers_A01.py: 
> 
> import cbase01
> reload(cbase01)
> 
> class ImStream_SavedBitmaps(cbase01.CImStream):
> 
>     def __init__(self):
>         cbase.CImStream.__init__(self)
>         print "SavedBitmaps"
> 
> **************************
> in file sequencer01.py
> 
> import cbase01    # the offending lines, program works 
> reload(cbase01)   # if I comment these out.
> 
> class Sequencer:
> 
>     def Append(self, item):
>         pass
> 
> *****************************
> in test02.py
> 
> import wrappers_A01
> reload(wrappers_A01)
> 
> import sequencer01
> reload(sequencer01)
> 
> x0 = wrappers_A01.ImStream_SavedBitmaps()
> ***************************************************************
> 
> If I run test02 I get the traceback
> 
> Traceback (innermost last):
>   File "<string>", line 1, in ?
>   File "D:\PythonCode\pna\eyeTracking\tests\test02.py", line 15, in ?
>     x0 = wrappers_A01.ImStream_SavedBitmaps()
>   File "D:\PythonCode\pna\eyeTracking\tests\wrappers_A01.py", line 21,
> in __init__
>     cbase.CImStream.__init__(self)
> TypeError: unbound method must be called with class instance 1st
> argument
> 
> 
> Any ideas what I am doing wrong?
> 
> Thanks,
> Marc
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to