class_desc/decorators/interface_required.md
from math import lgamma
Декора́тор interface_required
Декора́тор interface_required предназначен для явного указания методов, обязательных для реализации интерфейса. Он позволяет объявлять сигнатуру метода (через аннотации или явно заданную сигнатуру), тем самым обеспечивая возможность автоматического контроля за реализацией интерфейса в подклассах.
Основная информация
- Имя файла: anb_python_components\decorators\interface_decorators.py
- Автор: Александр Бабаев
- Версия: 1.0.0
- Дата начала поддержки: с версии 1.3.0
Атрибуты и методы декоратора
Параметры декоратора
signature: сигнатура метода, необходимая для интерфейса (опционально).**kwargs: аннотации (типы параметров и возвращаемого значения), используемые для указания необходимой сигнатуры метода.
Работоспособность декоратора
Декоратор принимает функцию, предназначенную для проверки сигнатуры, и накладывает соответствующую сигнатуру на декорируемый метод. После применения этого декоратора к методу, можно проверить, соответствует ли подпись метода требованиям интерфейса.
Пример использования
Рассмотрим пример использования декоратора для интерфейса:
from anb_python_components import Interface, interface_required
class MyInterface(Interface):
@interface_required(lambda self, number: int)
def calculate (self, number: int) -> str:
pass
class Implementation(MyInterface):
def calculate (self, number: int) -> str:
return str(number * 2)
MyInterface.check(Implementation)
Что делает декоратор?
- Сохраняет сигнатуру метода, указанную в декораторе, как атрибут функции (
__signature__или__annotations__). - Когда класс реализуется, сигнатура метода автоматически проверяется на соответствие декларации интерфейса.
Заключение
Декоратор interface_required обеспечивает простую и наглядную схему обязательного указания сигнатур методов интерфейса, что значительно облегчает проектирование и сопровождение приложений с интерфейсами, особенно в больших проектах с несколькими уровнями наследования.