Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pyOpPtPm 141 of 174 menu
◀ ▶

Параметры методов протокола в ООП в Python

При описании методов в протоколах необходимо указывать не только имена самих методов, но и принимаемые ими параметры.

Давайте посмотрим на примере. Пусть у нас дан протокол MathProto, описывающий класс для математических операций сложения, вычитания, умножения и деления:

from typing import Protocol class MathProto(Protocol): def sum(self): ... def subtract(self): ... def multiply(self): ... def divide(self): ...

Сейчас методы протокола не принимают никаких параметров. Класс с такими же методами без параметров подойдет, а с лишними аргументами - уже нет для проверки типов.

Давайте укажем параметры методов в протоколе:

class MathProto(Protocol): def sum(self, a, b): ... def subtract(self, a, b): ... def multiply(self, a, b): ... def divide(self, a, b): ...

Напишем реализацию с теми же сигнатурами:

class Math: def sum(self, a, b): return a + b def subtract(self, a, b): return a - b def multiply(self, a, b): return a * b def divide(self, a, b): return a / b

Если в классе задать другое количество параметров, статическая проверка типов покажет ошибку. Так мы не сможем ни случайно забыть параметр, ни добавить лишний.

Дан протокол UserProto:

class UserProto(Protocol): def set_name(self, name): ... def get_name(self): ... def set_age(self, age): ... def get_age(self): ...

Сделайте класс User, который подходит под данный протокол.

Сделайте протокол EmployeeProto с методами set_name, get_name, set_salary, get_salary и параметрами как в протоколе UserProto.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить