[python] 인터페이스 설계와 추상화

Python에서는 인터페이스 설계와 추상화를 위해 추상 기본 클래스(ABC, Abstract Base Class)를 사용합니다. 이를 통해 클래스의 인터페이스를 정의하고 메소드의 구현을 강제함으로써 코드의 일관성을 유지할 수 있습니다.

추상 기본 클래스 (ABC)

추상 기본 클래스는 완전하게 추상적인 클래스이며, 인스턴스화 될 수 없습니다. 대신 하위 클래스에서 상속받아 추상 메소드들을 구현하도록 합니다.

from abc import ABC, abstractmethod

class Shape(ABC):
    @abstractmethod
    def area(self):
        pass

    @abstractmethod
    def perimeter(self):
        pass

위의 예제에서 Shape 클래스는 두 개의 추상 메소드인 areaperimeter를 정의합니다. 이 클래스를 상속받는 하위 클래스에서는 반드시 이 두 메소드를 구현해야 합니다.

추상화

추상화는 복잡한 시스템을 단순화하여 핵심적인 요소만을 남기는 것을 의미합니다. Python에서는 추상화를 통해 코드의 모듈화와 응집도를 높이고, 유지보수성을 향상시킬 수 있습니다.

class Animal(ABC):
    @abstractmethod
    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        return "Woof!"

class Cat(Animal):
    def speak(self):
        return "Meow!"

위의 예제에서 Animal 클래스는 추상 메소드 speak를 정의하고, 이를 상속받아 하위 클래스인 DogCat에서 각각 구현하고 있습니다.

간결하면서도 유연한 추상화와 인터페이스 설계는 코드의 유지보수와 확장에 매우 유용합니다. Python에서의 추상화 개념을 잘 숙지하고 활용하여 더욱 견고하고 효율적인 코드를 작성할 수 있습니다.

어떻게 추상화와 인터페이스 설계를 도와주는가에 대한 참고자료