🔎 Что это такое: ошибка NotImplementedError Python 🔍

NotImplementedError в Python возникает, когда метод или функция, которая должна быть реализована в подклассе, не была реализована.

Это ошибка-исключение, которая позволяет написать заглушку для метода или функции, но вы могли забыть реализовать его полностью.

Вот пример:


class Shape:
    def area(self):
        raise NotImplementedError("Метод area() должен быть реализован в подклассе.")
    
class Rectangle(Shape):
    def __init__(self, width, height):
        self.width = width
        self.height = height
    
    def area(self):
        return self.width * self.height
    
my_rectangle = Rectangle(5, 3)
print(my_rectangle.area())  # Output: 15

В приведенном выше примере класс Shape является абстрактным классом и определяет метод area(), которая должна быть реализована в подклассе. Если мы попытаемся вызвать метод area() на объекте my_rectangle класса Rectangle, то получим ожидаемый результат 15.

В случае, если вы забудете реализовать метод area() в подклассе, вызов метода area() приведет к возникновению ошибки-исключения NotImplementedError.

Детальный ответ

Что такое NotImplementedError в Python?

В Python, NotImplementedError является встроенным исключением, которое возникает, когда метод или функция должны быть реализованы, но они не были реализованы в текущем контексте.

Когда вы создаете абстрактный класс или определяете метод в интерфейсе, но не предоставляете его реализацию, вместо этого бросается исключение NotImplementedError. Это позволяет вам указать, что метод или функция должны быть переопределены в производных классах или в классах, которые используют этот интерфейс.

Например, предположим, что у нас есть абстрактный класс Shape с методом calculate_area():

from abc import ABC, abstractmethod

class Shape(ABC):
    @abstractmethod
    def calculate_area(self):
        raise NotImplementedError("Метод calculate_area() должен быть реализован!")

В этом примере мы определяем абстрактный класс Shape с абстрактным методом calculate_area(). Когда мы вызываем этот метод на объекте класса Shape, который не имеет конкретной реализации метода calculate_area(), он вызывает исключение NotImplementedError.

Теперь предположим, что у нас есть подкласс Circle, который наследуется от абстрактного класса Shape. Чтобы функция calculate_area() была реализована, мы должны переопределить ее в подклассе Circle и предоставить конкретную реализацию:

Теперь, когда мы создаем объект класса Circle и вызываем метод calculate_area(), он будет использовать конкретную реализацию, определенную в подклассе Circle.

Если мы создадим объект класса Shape напрямую и вызовем метод calculate_area(), возникнет исключение NotImplementedError:

shape = Shape()
shape.calculate_area()

Вывод:

NotImplementedError: Метод calculate_area() должен быть реализован!

Как видите, исключение NotImplementedError позволяет явно указать, что метод или функция должны быть реализованы в производных классах или в классах, которые используют абстрактный класс или интерфейс.

Видео по теме

NotImplemented vs NotImplementedError (beginner - intermediate) anthony explains #251

#31. Инструкция raise и пользовательские исключения | ООП Python

Основы Python #15: Исключения

Похожие статьи:

🔒 Начните свою фишинг-кампанию с помощью Python: Как сделать фишинг на питоне

🔍 Как найти 2 максимальных числа в Python? 📈

🔧 Как установить шрифт в Python: простые инструкции и советы 🔧

🔎 Что это такое: ошибка NotImplementedError Python 🔍

🔧 Как выполнить функцию Python: простой и понятный гайд! 🐍

🚀 Как запустить python на Linux Mint через консоль?

🔎 Как удалить строку из Excel в Python: простое руководство 📊