class_desc/classes/interface.md


Класс Interface

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

Основная информация

  • Имя файла: anb_python_components\classes\interface.py
  • Автор: Александр Бабаев
  • Версия: 1.0.0
  • Дата начала поддержки: с версии 1.3.0

Атрибуты и методы класса

1. Метод verify

Проверяет, реализует ли объект или класс заданный интерфейс. Метод кэшируется для ускорения последующих проверок.

Параметры:

  • obj_or_class: объект или класс, который проверяется на соответствие интерфейсу.

Возвращает:

  • Кортеж (is_ok, problems), где:
    • is_ok: True, если объект или класс соответствуют интерфейсу, иначе False.
    • problems: список проблем, возникших при проверке (если is_ok == False).

Пример использования:

from anb_python_components import Interface

class MyClass:
    def my_method (self):
        pass

is_valid, issues = Interface.verify(MyClass)
print(is_valid)  # True или False

2. Метод check

Производит строгую проверку реализации интерфейса. Если реализация нарушена, поднимается исключение.

Параметры:

  • obj_or_class: объект или класс, который проверяется на соответствие интерфейсу.

Возвращает:

  • True, если объект или класс реализует интерфейс.
  • False, если объект или класс не реализует интерфейс.

Пример использования:

from anb_python_components import Interface

class MyClass:
    def my_method (self):
        pass

Interface.check(MyClass)  # Raises TypeError, если MyClass не реализует интерфейс

3. Метод get_methods

Возвращает словарь методов интерфейса с их сигнатурами.

Возвращает:

  • Словарь, где ключи — имена методов, а значения — их сигнатуры.

Пример использования:

from anb_python_components import Interface

methods = Interface.get_methods()
print(methods)  # Словарь методов интерфейса

4. Метод register

Регистрирует класс как реализующий интерфейс, подтверждая, что он соответствует требованиям интерфейса.

Параметры:

  • target_class: класс, который регистрируется как реализующий интерфейс.

Возвращает:

  • Зарегистрированный класс.

Пример использования:

from anb_python_components import Interface

@Interface.register
class MyImplementation:
    def required_method (self):
        pass

Заключение

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

На главную