абстрактные базовые классы python, разница между mixin и абстрактным методом
в следующей таблице показаны различные абстрактные базовые классы, которые используются по всему python. Тем не менее, я немного смущен точно (в этом контексте)
в чем разница между и
2 ответов
что-нибудь в столбце абстрактные методы, вы должны реализовать себя. ABC предоставляет реализации по умолчанию методов в столбце методы Mixin, реализованные в терминах методов, которые необходимо написать.
абстрактные методы-это те, которые вы должны определить, когда вы наследуете от этой ABC.
в столбце Mixin перечислены методы, которые вы можете использовать впоследствии, вы получаете их бесплатно, наследуя не от object
но из этого ABC. Если вы определяете __getitem__
, вы можете автоматически использовать __iter__
потом например.
еще одно преимущество наследования от этих классов заключается в том, что любой может впоследствии увидеть, каким должен быть ваш класс, потому что это issubclass(your_class, any_ABC)
и любой экземпляр is isinstance(your_object, any_ABC)
. Но это написано в учебнике после таблицы вы выложили.