Back to questions
Junior — Middle
52
Что произойдет, если создать класс, унаследованный от нескольких базовых классов, у которых есть одинаковые методы?
Answer from AI
sobes.tech AI
Если в Python создать класс, унаследованный от нескольких базовых классов, у которых есть методы с одинаковыми именами, то при вызове такого метода будет использован метод из первого базового класса в списке наследования. Это происходит из-за механизма разрешения методов (Method Resolution Order, MRO).
MRO определяет порядок поиска методов в иерархии классов. Чтобы увидеть порядок, можно использовать атрибут __mro__ или функцию mro():
class A:
def method(self):
print("A method")
class B:
def method(self):
print("B method")
class C(A, B):
pass
c = C()
c.method() # Выведет: A method
print(C.__mro__)
В этом примере метод method из класса A будет вызван, потому что A стоит первым в списке наследования класса C. Если нужно вызвать метод из другого базового класса, можно явно обратиться к нему, например, B.method(self).