inheritance problem

Miki Tebeka miki.tebeka at zoran.com
Thu Feb 19 02:28:30 EST 2004


Hell Den,

> Example:
> ------------
> class c1:
>   def method1(self):
>     print 'class c1, method1'
>   def method2(self):
>     print 'class c1, method2'
>     self.method1()
> 
> class c2(c1):
>   def method1(self):
>     print 'class c2, method1'
>     c1.method2(self)
>   def method2(self):
>     print 'class c2, method2'
> 
> c = c2()
> c.method1()
> ------------
> i expect :
> class c2, method1
> class c1, method2
> class c1, method1
> 
> but i get this:
> class c2, method1
> class c1, method2
> class c2, method1
> class c1, method2
> ...
> RuntimeError: maximum recursion depth exceeded
> 
> How fix this?
You are thinking C++ (I guess), all methods in Python are "virtual".
What happens is:
c.method1 invokes c2.method1 which calls c2.method2 on self.
c2.method2 calls self.method1 *which is c2.method1*, hence the
recursion.

If you can specify the motivation behind this desing mabye we can help
you overcode it.

HTH.
Miki



More information about the Python-list mailing list