抽象クラスの無効な定義と使用箇所を報告します。
例:
from abc import abstractmethod, ABC
class Figure(ABC):
@abstractmethod
def do_figure(self):
pass
class Triangle(Figure): # 'Triangle' クラスですべての抽象メソッドが定義されていません
def do_triangle(self):
pass
Triangle() # 抽象クラス 'Triangle' をインスタンス化できません
クイックフィックスが適用されると、IDE は Triangle クラスの抽象メソッドを実装します。
from abc import abstractmethod, ABC
class Figure(ABC):
@abstractmethod
def do_figure(self):
pass
class Triangle(Figure):
def do_figure(self):
pass
def do_triangle(self):
pass
Triangle()
また、abc.abstractmethod がメタクラスとして abc.ABCMeta を使用していないクラスで使用されている場合に警告します:
from abc import abstractmethod
class MyClass:
@abstractmethod # 'MyClass' は抽象クラスではありません
def foo(self):
...