Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: interface, abstract class, abc, inheritance, design

В чем отличие интерфейса от абстрактного класса?

Вопрос направлен на понимание различий между интерфейсами и абстрактными классами и ситуаций, когда стоит использовать каждый из них.

Короткий ответ

Интерфейс определяет только сигнатуру методов, абстрактный класс может содержать и сигнатуру, и реализацию. В Python абстрактные классы реализуются с помощью модуля abc.

Длинный ответ

Интерфейс (в духе Java или TypeScript)

  • Не существует как отдельная сущность в Python.

  • Можно имитировать через абстрактные базовые классы.

Абстрактный класс

  • Используется модуль abc.

  • Может содержать абстрактные и конкретные методы.

from abc import ABC, abstractmethod

class Animal(ABC):
    	@abstractmethod
    	def speak(self):
        	pass

class Dog(Animal):
    	def speak(self):
        	return "Woof!"

Отличия

  • Интерфейс — только контракт, без логики.

  • Абстрактный класс — может содержать часть логики и состояния.

Вывод:
В Python чаще используют абстрактные классы через abc, чтобы задать интерфейс и базовую реализацию.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    5

Навыки

  • Python

    Python

Ключевые слова

#interface

#abstract class

#abc

#inheritance

#design

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.