산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

Python 상속 마스터하기: 개념, 문법, 실전 예제

Python 상속

상속으로 부모 클래스의 모든 기능을 물려받으면서 기능을 추가/확장한 새 클래스 생성 가능. 이 튜토리얼은 Python 상속 사용법을 명확한 예제와 모범 사례로 설명합니다.

동영상: Python 상속

Python 상속

상속은 코드 재사용과 논리적 계층을 촉진하는 객체지향 프로그래밍 핵심 원칙. 새 클래스(파생 또는 자식 클래스)는 기존 클래스(베이스 또는 부모 클래스)를 최소 변경으로 정의. 자식 클래스는 부모의 속성/메서드 자동 수신하며 필요시 오버라이드나 확장 가능.


Python 상속 문법

class BaseClass:
    # 베이스 클래스 본문
class DerivedClass(BaseClass):
    # 파생 클래스 본문

위 스니펫에서 DerivedClass는 BaseClass의 모든 퍼블릭 멤버 상속. 새 메서드 추가나 기존 메서드 오버라이드로 베이스 구현 재사용하면서 행동 커스터마이즈 가능.


Python 상속 예제

실용적 예로 상속 설명. 변의 개수와 길이 저장하는 제네릭 Polygon 클래스:

class Polygon:
    def __init__(self, no_of_sides):
        self.n = no_of_sides
        self.sides = [0 for _ in range(no_of_sides)]
    def input_sides(self):
        self.sides = [float(input(f"Enter side {i+1} : ")) for i in range(self.n)]
    def display_sides(self):
        for i, side in enumerate(self.sides, 1):
            print(f"Side {i} is {side}")

Polygon 클래스는 모든 다각형 공통 속성/메서드 캡슐화. Triangle은 정확히 세 변 가진 특정 다각형이므로 Polygon 상속해 공통 로직 재정의 불필요:

class Triangle(Polygon):
    def __init__(self):
        super().__init__(3)  # 베이스 3변으로 초기화
    def find_area(self):
        a, b, c = self.sides
        s = (a + b + c) / 2
        area = (s * (s - a) * (s - b) * (s - c)) ** 0.5
        print(f"The area of the triangle is {area:.2f}")

다음 실행으로 상속 동작 확인:

>>> t = Triangle()
>>> t.input_sides()
Enter side 1 : 3
Enter side 2 : 5
Enter side 3 : 4
>>> t.display_sides()
Side 1 is 3.0
Side 2 is 5.0
Side 3 is 4.0
>>> t.find_area()
The area of the triangle is 6.00

Triangle이 input_sides(), display_sides() 호출 가능함에 주목—상속으로 자동 사용 가능.

자식 클래스에서 속성/메서드 못 찾으면 부모 클래스 탐색, 필요시 상속 체인 위로 계속 탐색.


Python 메서드 오버라이딩

Polygon과 Triangle 모두 __init__ 정의. 자식 구현이 부모 것 오버라이드하지만 베이스 로직 명시적 호출로 확장 권장. super() 사용이 현대적 권장 방식:

class Triangle(Polygon):
    def __init__(self):
        super().__init__(3)  # Polygon.__init__ 호출

오버라이드 시 자식 메서드가 새 행동 추가하거나 베이스 행동 수정하며 원본 기능 보존.

Python은 상속 관계 인트로스펙션용 isinstance()와 issubclass() 제공:

t = Triangle()
print(isinstance(t, Triangle))  # True
print(isinstance(t, Polygon))   # True
print(isinstance(t, int))       # False
print(isinstance(t, object))    # True
print(issubclass(Polygon, Triangle))  # False
print(issubclass(Triangle, Polygon))  # True
print(issubclass(bool, int))          # True

이 유틸리티들은 타입 체크와 객체가 예상 인터페이스 준수하는지 보장에 필수.

super() 더 알아보기: Python super() 함수 문서.


python

  1. 파이썬 데이터 타입 마스터하기: 실전 가이드
  2. 파이썬 연산자 마스터하기: 종합 가이드
  3. 파이썬 pass 문 마스터하기: 실전 가이드
  4. Python 딕셔너리 마스터하기: 생성, 조작, 고급 기법
  5. Python 사용자 정의 예외 마스터하기: 실전 가이드
  6. Python 객체지향 프로그래밍 마스터하기: 클래스, 상속, 캡슐화, 다형성
  7. Python 연산자 오버로딩 마스터하기: 실전 가이드
  8. Python @property 데코레이터 마스터하기: 깔끔하고 하위 호환 가능한 게터/세터
  9. 파이썬 type()과 isinstance() 이해하기: 실전 예제
  10. C# 상속 마스터하기: 재사용 가능하고 유지보수하기 쉬운 코드 작성