ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 15. Class 상속
    공부합시다!/python 2023. 2. 13. 00:11
    728x90

    지금까지 배운 Class를 다른 Class에서 사용할 수도 있습니다.

    이를 Class 상속이라고 합니다.

    부모 Class 슈퍼 클래스라고 하며 이를 물려받는 Class를 자식 Class 혹은 서브 Class 라고 합니다.

    계속해서 재사용률을 높여 코드를 단순화하기 위해서 사용합니다.

     

    '''
    1. 클래스 상속, 다중상속
     1.1. 클래스 상속
     1.2. 클래스 상속 예제 코디
     1.3. 클래스 다중 상속
    '''
    
    # 예제 1
    # 상속 기본
    # 부모 클래스 (슈퍼 클래스) 및 자식 클래스(서브 클래스) -> 모든 속성, 메소드 사용 가능
    # 코드의 단순화 가능
    
    # 라면 -> 속성(종류, 회사, 맛, 면, 면 종류, 이름) : 부모
    # 속성을 물려받아 사용하면 코드의 단순화
    
    class Car:
      ''' Parent Class'''
      def __init__(self, type, color):
        self.type = type
        self.color = color
    
      def show(self):
        return 'Car Class "show Method!"'
    
    class BmwCar(Car):
      ''' Sub Class'''
      def __init__(self, car_name, type, color):
        super().__init__(type, color)
        self.car_name = car_name
    
      def show_model(self) -> None:
        return "You Car Name : %s " % self.car_name
    
    class BenzCar(Car):
      ''' Sub Class'''
      def __init__(self, car_name, type, color):
        super().__init__(type, color)
        self.car_name = car_name
    
      def show_model(self) -> None:
        return "You Car Name : %s " %self.car_name
    
      def show(self):
        print(super().show())
        return ' Car Info : %s %s %s ' %(self.car_name, self.type, self.color) 
    
    # 일반사용
    model1 = BmwCar('520d', 'sedan', 'red')
    
    print(model1.color) 
    print(model1.type)
    print(model1.car_name)
    print(model1.show())
    print(model1.show_model())
    print(model1.__dict__)
    
    # Method Overriding(오버라이팅) -> 부모와 동일한 메소드가 존재할 경우 자식 메소드는 부모 메소드를 참조하지 않음.
    model2 = BenzCar('AMG', 'sub', 'black')
    print(model2.show())
    
    # parent Method Call
    model3 = BenzCar('BMG', 'sedan', 'White')
    print(model3.show())
    
    # 상속 관계가 깊은 경우 표현하는 method
    # Inheritance Info
    
    print(BmwCar.mro())
    print(BenzCar.mro())
    
    # 다중 상속
    
    class X():
      pass
    
    class Y():
      pass
    
    class Z():
      pass
    
    class A(X, Y):
      pass
    
    class B(Y, Z):
      pass
    
    class C(B, A, Z):
      pass
    
    print(C.mro())
    print(B.mro())

    728x90

    '공부합시다! > python' 카테고리의 다른 글

    17. 예외처리  (0) 2023.02.16
    16. Module과 Package  (0) 2023.02.14
    14. Class  (0) 2023.02.10
    13. DB: DB data 다루기 - 2  (0) 2023.02.08
    13. DB: DB data 다루기 - 1  (0) 2023.02.07
Designed by Tistory.