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

Параметры абстрактных методов в ООП в Python

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

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

from abc import ABC, abstractmethod class MathOp(ABC): @abstractmethod def sum(self): pass @abstractmethod def subtract(self): pass @abstractmethod def multiply(self): pass @abstractmethod def divide(self): pass

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

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

from abc import ABC, abstractmethod class MathOp(ABC): @abstractmethod def sum(self, a, b): pass @abstractmethod def subtract(self, a, b): pass @abstractmethod def multiply(self, a, b): pass @abstractmethod def divide(self, a, b): pass

Напишем теперь реализацию в классе-потомке:

class Math(MathOp): 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

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

Пусть у нас дан такой абстрактный класс UserBase:

from abc import ABC, abstractmethod class UserBase(ABC): @abstractmethod def set_name(self, name): pass @abstractmethod def get_name(self): pass @abstractmethod def set_age(self, age): pass @abstractmethod def get_age(self): pass

Сделайте класс User, который будет наследовать данный абстрактный класс.

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