В уроке про абстрактные классы мы видели, что isinstance с ABC требует явного наследования - структурно похожий, но не унаследованный класс не проходит проверку. Protocol из модуля typing даёт противоположный подход: структурную типизацию, знакомую как "утиная типизация" (duck typing) - "если оно крякает как утка, значит это утка", неважно, от чего оно формально унаследовано.