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

Наследование протоколов в ООП в Python

Протоколы, так же, как и классы, могут наследовать друг от друга. Дочерний протокол включает методы родительского и добавляет свои.

Пусть есть протокол фигуры с методами площади и периметра:

from typing import Protocol class FigureProto(Protocol): def get_square(self) -> float: ... def get_perimeter(self) -> float: ...

Пусть также есть протокол прямоугольника с конструктором по двум сторонам:

class RectangleProto(FigureProto, Protocol): def __init__(self, a, b): ...

RectangleProto наследует методы FigureProto. Класс с __init__, get_square и get_perimeter подходит под оба протокола.

Сделаем протоколы для пользователя и сотрудника по тому же принципу:

class UserProto(Protocol): def get_name(self) -> str: ... def set_name(self, name) -> None: ... def get_age(self) -> int: ... def set_age(self, age) -> None: ... class EmployeeProto(UserProto, Protocol): def get_salary(self) -> int: ... def set_salary(self, salary) -> None: ...

Класс Employee с шестью методами подходит под EmployeeProto и автоматически под UserProto:

class Employee: def __init__(self, name, age, salary): self.__name = name self.__age = age self.__salary = salary def get_name(self): return self.__name def set_name(self, name): self.__name = name def get_age(self): return self.__age def set_age(self, age): self.__age = age def get_salary(self): return self.__salary def set_salary(self, salary): self.__salary = salary

Сделайте протокол UserProto с методами get_name, set_name, get_age, set_age.

Сделайте протокол EmployeeProto, наследующий UserProto, с методами get_salary и set_salary.

Сделайте класс Employee, подходящий под EmployeeProto.

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