абстрактные базовые классы python, разница между mixin и абстрактным методом

в следующей таблице показаны различные абстрактные базовые классы, которые используются по всему python. Тем не менее, я немного смущен точно (в этом контексте)

в чем разница между и

2 ответов


что-нибудь в столбце абстрактные методы, вы должны реализовать себя. ABC предоставляет реализации по умолчанию методов в столбце методы Mixin, реализованные в терминах методов, которые необходимо написать.


абстрактные методы-это те, которые вы должны определить, когда вы наследуете от этой ABC.

в столбце Mixin перечислены методы, которые вы можете использовать впоследствии, вы получаете их бесплатно, наследуя не от object но из этого ABC. Если вы определяете __getitem__, вы можете автоматически использовать __iter__ потом например.

еще одно преимущество наследования от этих классов заключается в том, что любой может впоследствии увидеть, каким должен быть ваш класс, потому что это issubclass(your_class, any_ABC) и любой экземпляр is isinstance(your_object, any_ABC). Но это написано в учебнике после таблицы вы выложили.