Python/오류 및 해결 방법
TypeError: Can't instantiate abstract class with abstract method
시바도지
2023. 6. 25. 04:25
반응형
추상 클래스를 상속받은 파생 클래스 내부에서 추상 클래스에서 선언한 추상 메소드를 구현하지 않았을 때 발생하는 오류이다.
파생 클래스 내부에 추상 메소드를 구현해주면 해결할 수 있다.
예시
오류 코드
from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def eat(self):
pass
class Dog(Animal):
def __init__(self, name, age):
self.name = name
self.age = age
doge = Dog("doge", 1)
print(doge.name)
print(doge.age)
# 결과: TypeError: Can't instantiate abstract class Dog with abstract method eat
`Dog` 클래스 내부에 eat 메소드를 선언
정상 코드
from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def eat(self):
pass
class Dog(Animal):
def __init__(self, name, age):
self.name = name
self.age = age
def eat(self, food):
print(f"{self.name} eats {food}")
doge = Dog("doge", 1)
print(doge.name)
print(doge.age)
doge.eat("cake")
반응형