본문 바로가기
Python/오류 및 해결 방법

TypeError: Can't instantiate abstract class with abstract method

by 시바도지 2023. 6. 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")

 

 

반응형

댓글