У відповідь Анона:
"Якщо вам потрібно зробити щось із супер- __init__класу __init__, крім того, що робиться в поточному класі , ви повинні зателефонувати самі, оскільки це не відбудеться автоматично"
Це неймовірно: він формулює точно протилежний принцип успадкування.
Це не те, що "щось із супер __init__ (...) не відбудеться автоматично" , це те, що воно буде автоматично, але це не відбувається, тому що базовий клас " __init__переосмислюється визначенням похідних класів__init__
Тоді ЧОМУ визначаючи похідний_клас ' __init__, оскільки він перекриває те, на що спрямований, коли хтось вдається до спадщини ??
Це тому, що потрібно визначити щось, що НЕ робиться в базовому класі ' __init__, і єдина можливість отримати це - поставити його виконання у функцію похідного класу' __init__.
Іншими словами, потрібно щось у базовому класі " __init__на додаток до того, що автоматично робиться в базовому класі", __init__якби цей останній не був відмінений.
НЕ навпаки.
Тоді проблема полягає в тому, що бажані вказівки, присутні в базовому класі ' __init__, більше не активуються в момент інстанції. Для того, щоб компенсувати цю інактивацію, потрібно щось особливе: явно викликати базовий клас ' __init__, щоб ЗБЕРІГАТИ , НЕ ДОДАТИ, ініціалізацію, виконану базовим класом' __init__. Саме так сказано в офіційному документі:
Переважний метод у похідному класі може насправді хотіти розширити, а не просто замінити метод однойменного базового класу . Існує простий спосіб прямого виклику методу базового класу: просто зателефонуйте BaseClassName.methodname (self, аргументи).
http://docs.python.org/tutorial/classes.html#inheritance
Ось і вся історія:
коли мета KEEP - ініціалізація, виконана базовим класом, це чисте успадкування, нічого особливого не потрібно, потрібно просто уникати визначення __init__ функції у похідному класі
коли мета - ЗАМІНА ініціалізації, виконаної базовим класом, __init__повинна бути визначена у похідному класі
коли метою є додавання процесів ADD до ініціалізації, що виконується базовим класом, __init__ повинен бути визначений похідний клас ' , що містить явний виклик базового класу__init__
Що я дивуюсь на посаді Анона - це не тільки те, що він висловлює протилежність теорії спадкування, але й те, що через них було порушено 5 хлопців, не обернувшись волоссям, і більше того, що за два роки в них ніхто не реагував нитка, цікаву тему якої треба читати порівняно часто.
objectбув помилковим. Але зараз ви навіть не маєтеsuperназви вашого запитання, на яке йдеться.