Множественное наследование

При множественном наследовании, применяется правило MRO (Method Resolution Order) - порядок разрешения методов - тот кто левее, тот главнее

Будет искать метод сначала в Proffessor потом в Student. Т.к. в Proffessor есть такой метод, то выведет его.

class Person:
	def hello(self):
		print("I am Human")

class Student(Person):
	def hello(self):
		print("I am a student")

class Proffessor(Person):
	def hello(self):
		print("I am a proffessor")

class SomeOne(Proffessor, Student):
	pass

s = SomeOne()

s.hello()
# I am a proffessor
12345678910111213141516171819

Чтобы посмотреть, как будет произведен поиск в пространстве имен нужных свойств и методов, можно вызвать функцию mro() у экземпляра класса.

...
s.__class__.mro()

# [__main__.SomeOne, __main__.Prof, __main__.Student,__main__.Person, object]
1234

Last updated