Я путаюсь с концепцией в переопределении базового класса python. Я узнал, что вы можете иметь две разные функции с одним и тем же именем в разных классах, и правильная функция будет вызываться на объекте, в зависимости от того, из какого класса находится объект. Однако, я только что узнал о супер-вызове, и я узнал, что вы можете использовать его, если вы перевернули (исправить прошедшее время?) Функцию, которая вам нужна. Я смущен, потому что переопределенная функция не ушла в первую очередь, не так ли? Зачем мне «восстанавливать» его, используя супервызов?Класс переопределения класса Python
ответ
Тип ребенка является первым в MRO, поэтому его метод будет вызван, даже если любой из его родителей имеет тот же метод. super
«перезапускает» MRO по следующей ссылке в цепочке наследования и позволяет обнаруживать атрибуты, принадлежащие родительским классам.
Я не уверен, что такое MRO, но я как бы понимаю, что вы говорите. Подумав об этом, я думаю, что у меня есть ответ (что такое новичок-программист, как я), может кто-нибудь, кто это знает, лучше скажет мне, правильно ли это? Объект из производного класса может использовать только переопределенную функцию из производного класса. ** super ** позволяет объекту получить доступ к исходной функции из базового класса. –
MRO - это то, что описывает ссылка в моем ответе. –
Я знаю, но мне трудно понять это, потому что единственное воздействие на питон, который у меня был, это codeacademy. –
Эта ссылка может быть полезна для понимания порядка разрешения метода в Python. http://python-history.blogspot.com/2010/06/method-resolution-order.html – ozgur