Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 클래스의 상속 vs 인스턴스화, 핵심 개념 쉽게 이해하기

상속(Inheritance)이란?

파이썬은 객체 지향 프로그래밍 언어로서 상속을 지원하며, 하나의 클래스가 여러 클래스를 동시에 물려받는 다중 상속(multiple inheritance)까지도 지원합니다. 상속은 기존 클래스의 속성과 메서드를 거의 또는 전혀 수정하지 않고 그대로 물려받아 새로운 클래스를 정의하는 기법으로, 코드의 재사용성을 높이고 중복을 줄여주는 객체 지향의 핵심 개념입니다.

상속 관계에서 사용되는 주요 용어는 다음과 같습니다.

  • 슈퍼클래스(Superclass): 자신의 속성과 동작(메서드)을 다른 클래스에게 물려주는 기존 클래스
  • 서브클래스(Subclass): 슈퍼클래스로부터 상속받는 새로운 클래스로, '자식 클래스(child class)' 또는 '상속 클래스(heir class)'라고도 부름

다음은 두 개의 클래스를 동시에 상속받는 다중 상속의 기본 구조입니다.

class A:            # 클래스 A 정의
    pass

class B:            # 클래스 B 정의
    pass

class C(A, B):      # A와 B를 모두 상속받는 서브클래스
    pass

위 예제에서 클래스 C는 A와 B가 가진 모든 속성과 메서드를 물려받아 사용할 수 있습니다.

인스턴스화(Instantiation)란?

인스턴스화는 클래스를 기반으로 실제 객체(인스턴스)를 생성하는 과정을 말합니다. 인스턴스화된 객체는 해당 클래스가 가진 모든 클래스 변수와 메서드를 그대로 물려받아 사용할 수 있습니다.

파이썬에서 클래스를 인스턴스화하는 방법은 매우 간단합니다. 마치 함수를 호출하듯이 클래스 이름 뒤에 괄호를 붙여 호출하면 되며, 이때 __init__ 메서드가 정의한 매개변수에 해당하는 인수를 함께 전달합니다. 호출 결과로 반환되는 값이 바로 새롭게 생성된 객체입니다.

예제

class Foo():
    def __init__(self, x, y):
        print(x + y)

f = Foo(3, 4)   # Foo 클래스의 인스턴스 생성

실행 결과

7

위 예제에서 Foo(3, 4)를 호출하는 순간 __init__ 생성자가 자동으로 실행되어 x와 y의 합인 7이 출력되고, 새로운 인스턴스 f가 생성됩니다. 여기서 self는 생성되는 인스턴스 자신을 가리키는 매개변수입니다.

정리: 상속 vs 인스턴스화

구분상속(Inheritance)인스턴스화(Instantiation)
개념기존 클래스를 기반으로 새로운 클래스를 정의클래스로부터 실제 객체를 생성
대상클래스 → 클래스클래스 → 객체(인스턴스)
목적코드 재사용 및 계층 구조 설계실제 데이터와 동작을 수행하는 객체 확보
관련 문법class 자식(부모1, 부모2):객체 = 클래스(인수...)

즉, 상속은 클래스와 클래스 사이의 관계를 만드는 설계 단계의 개념이고, 인스턴스화는 설계된 클래스를 바탕으로 실제 동작 가능한 객체를 만드는 실행 단계의 개념이라는 점에서 서로 다릅니다. 두 개념을 명확히 구분하면 객체 지향 프로그래밍을 훨씬 수월하게 이해할 수 있습니다.