abstract-method / W0223#

Message emitted:

Method %r is abstract in class %r but is not overridden in child class %r

Description:

Used when an abstract method (i.e. raise NotImplementedError) is not overridden in concrete class.

Problematic code:

abstract_method.py:

import abc


class WildAnimal:
    @abc.abstractmethod
    def make_sound(self):
        pass


class Panther(WildAnimal):  # [abstract-method]
    pass

function_raising_not_implemented_error.py:

class Pet:
    def make_sound(self):
        raise NotImplementedError


class Cat(Pet):  # [abstract-method]
    pass

Correct code:

abstract_method.py:

import abc


class WildAnimal:
    @abc.abstractmethod
    def make_sound(self):
        pass


class Panther(WildAnimal):
    def make_sound(self):
        print("MEEEOW")

function_raising_not_implemented_error.py:

class Pet:
    def make_sound(self):
        raise NotImplementedError


class Cat(Pet):
    def make_sound(self):
        print("Meeeow")

Created by the classes checker.