Распространенным заблуждением является то, что super () будет вызывать все методы суперклассов.Я не буду.Это назовет только один из них.Какой из них автоматически рассчитывается super () в соответствии с некоторыми конкретными правилами.Иногда тот, кого он называет, не настоящий суперкласс, а родной брат.Но нет никакой гарантии, что все будут вызваны, если все классы, в свою очередь, не используют super ().
В этом случае A и B не вызывают super.И если вы добавите его в A, он на самом деле вызовет «отсутствующие» классы, но если вы добавите его в B, вы получите ошибку, потому что в этом конкретном случае B окажется «последним» (или первым,в зависимости от того, как вы это видите) класс.
Если вы хотите использовать super (), лучшим решением будет иметь общий базовый класс для A и B, который реализует call_me, но не вызывает super ().(Спасибо Делнану за предложение).
Однако, если вы знаете иерархию классов, вы можете напрямую вызывать методы суперклассов вместо использования super ().Обратите внимание, что это в приведенном выше случае не означает, что каждый класс должен вызывать каждый из своих базовых классов напрямую.Поэтому это бесполезно в тех случаях, когда вы, как программист, не имеете полного контроля над иерархией классов, например, если вы пишете библиотеки или mixin-классы.Тогда вы должны использовать super ().