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 позволяет вводить контрактные обязательства для классов и объектов, обеспечивая целостность архитектурных принципов проектирования. Использование интерфейсов увеличивает надежность и тестопригодность приложений, снижая риски появления ошибок и конфликтов между компонентами.