mutlifile inheritance problem
Peter Cacioppi
peter.cacioppi at gmail.com
Wed Sep 18 19:54:00 EDT 2013
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
More information about the Python-list
mailing list