Изменить порядок разрешения метода
Можно ли изменить порядок разрешения метода?
class A(object):
def __init__(self, a):
self.a=a
def method(self):
print('A method')
class B(object):
def __init__(self, b1, b2):
self.b1=b1
self.b2=b2
def method(self):
print('B method')
class C(A, B):
def __init__(self, name, **kwargs):
if name=='A':
A.__init__(self, a=kwargs['a'])
elif name=='B':
B.__init__(self, b1=kwargs['b1'], b2=kwargs['b2'])
Я хочу изменить MRO, если вход name
это "B", так что когда я звоню:
>>>c=C(name='B', b1=2, b2=3)
>>>c.method()
он возвращает "метод B".
Спасибо
1 ответ
Просто измените определение класса C на: class C(B, A): ... то есть: измените порядок унаследованных классов.