One more comment - my trick has some utility with multiple inheritance, but you really need to understand super() to and method resolution ordering in that case (as, I suppose, you ought to whenever you cross the Rubicon beyond single inheritance). So it's a nice trick but YMMV
On Wednesday, September 18, 2013 4:54:00 PM UTC-7, Peter Cacioppi wrote: > 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