I have code like this:
class X(object):
def __init__(self):
print('X')
def Print(self):
print('X')
class Y(object):
def __init__(self):
print('Y')
def Print(self):
print('Y')
class Z(X,Y):
def __init__(self):
print('Z')
def Print(self):
print('z')
super().Print()
>>> z=Z()
Z
>>> z.Print()
X
It searches for Print
according to
Z.__mro__
(<class '__main__.Z'>, <class '__main__.X'>, <class '__main__.Y'>, <class 'object'>)
and find it for first time in X
.
But if I want to z.Print()
run Y.Print()
, I can use an explicit class name like:
class Z(X,Y):
def __init__(self):
print('Z')
def Print(self):
print('z')
Y.Print()
but this is not dynamic. Is there a better way to do this?