Override is very nice feature but unfortunately currently in PyDev it change to wrong pattern - it generates code like that:
class B(A):
def overriden(self):
A.overriden(self)
But should respect polymorphism since currently lead to double calls of super super parents. Valid code should be:
class B(A):
def overriden(self):
super(B, self).overriden()
Why because - compare __init__ and chain behavior to your current implementation I called it 'strict' - valid code generates 4 calls in chain - static generates 5 calls (double call of super super parent:
Code bellow:
class SuperParent(object):
def __init__(self):
print 'SuperParent'
def chain(self):
print 'SuperParent'
def strict(self):
print 'SuperParent'
class Parent1(SuperParent):
def __init__(self):
super(Parent1, self).__init__()
print 'Parent1'
def hello(self):
print 'Parent1'
def chain(self):
super(Parent1, self).chain()
print 'Parent1'
def strict(self):
SuperParent.strict(self)
print 'Parent1'
class Parent2(SuperParent):
def __init__(self):
super(Parent2, self).__init__()
print 'Parent2'
def hello(self):
print 'Parent2'
def chain(self):
super(Parent2, self).chain()
print 'Parent2'
def strict(self):
SuperParent.strict(self)
print 'Parent2'
class Child1(Parent1, Parent2):
def __init__(self):
super(Child1, self).__init__()
print 'Child1'
def chain(self):
super(Child1, self).chain()
print 'Child1'
def strict(self):
Parent1.strict(self)
Parent2.strict(self)
print 'Child1'
class Child2(Parent2, Parent1):
def __init__(self):
super(Child2, self).__init__()
print 'Child2'
def chain(self):
super(Child2, self).chain()
print 'Child2'
def strict(self):
Parent2.strict(self)
Parent1.strict(self)
print 'Child2'
print '-' * 16
c = Child1()
print '-' * 8
c.hello()
print '-' * 8
c.chain()
print '-' * 8
c.strict()
print '-' * 16
c = Child2()
print '-' * 8
c.hello()
print '-' * 8
c.chain()
print '-' * 8
c.strict()
Calls results:
----------------
SuperParent
Parent2
Parent1
Child1
--------
Parent1
--------
SuperParent
Parent2
Parent1
Child1
--------
SuperParent
Parent1
SuperParent
Parent2
Child1
----------------
SuperParent
Parent1
Parent2
Child2
--------
Parent2
--------
SuperParent
Parent1
Parent2
Child2
--------
SuperParent
Parent2
SuperParent
Parent1
Child2
If you have quest ask freely.