728x90
NotImplementedError: must override abstract method in subclass
오류는 추상 클래스 또는 인터페이스에서 정의된 메서드를 하위 클래스에서 구현하지 않았을 때 발생합니다. 이 오류는 특히 객체 지향 프로그래밍(OOP)에서 상속 구조를 사용할 때 자주 나타납니다.
파이썬에서는 abc
모듈의 ABC
와 @abstractmethod
를 사용하여 추상 메서드를 정의할 수 있으며, 이 경우 하위 클래스는 반드시 해당 메서드를 구현해야 합니다.
● 오류 발생 예시
from abc import ABC, abstractmethod
class Base(ABC):
@abstractmethod
def run(self):
pass
class Child(Base):
pass
Child().run()
Child
클래스가 run()
메서드를 구현하지 않았기 때문에 객체 생성 시 오류가 발생합니다.
TypeError: Can't instantiate abstract class Child with abstract method run
● 해결 방법
- 모든
@abstractmethod
를 하위 클래스에서 구현 - 임시로 사용 시
raise NotImplementedError
명시 - 직접 객체 생성을 시도하지 않고 추상 클래스를 상속만 사용
● 예시 코드 (정상 구현)
class Child(Base):
def run(self):
print("Child 클래스에서 run 메서드 구현")
● 자주 하는 실수
- 추상 클래스 인스턴스를 직접 생성 시도
- 추상 메서드를 하위 클래스에서 잊고 구현하지 않음
raise NotImplementedError
를 정의만 해놓고 호출
● 결론
NotImplementedError - must override abstract method
는 추상 메서드를 하위 클래스에서 구현하지 않을 때 발생합니다. OOP 설계 시 상속 구조를 명확히 이해하고, 반드시 필요한 메서드는 구현하도록 강제하는 것이 중요합니다.
728x90
'프로그래밍언어 > 파이썬[Error]' 카테고리의 다른 글
[파이썬][Error] 083. EOFError - EOF when reading a line (0) | 2025.05.30 |
---|---|
[파이썬][Error] 082. StopIteration - generator exhausted (0) | 2025.05.30 |
[파이썬][Error] 080. AssertionError - assert isinstance(x, int) failed (0) | 2025.05.30 |
[파이썬][Error] 079. AssertionError - test failed: condition not met (0) | 2025.05.30 |
[파이썬][Error] 078. AssertionError - assert len(data) > 0 failed (0) | 2025.05.30 |