본문 바로가기

Python Basics

[패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 9 회차 미션

패스트캠퍼스 파이썬 웹개발 올인원 패키지 후기(9)

파이썬 웹개발 올인원 패키지 9 일차 후기 겸 학습기록 입니다.

지난 시간에 배운 클래스에서 좀 더 심화된 상속에 대해서 학습 하였습니다.

객체지향에서 굉장히 중요한 개념인데요.

상속이 무엇인지 제 학습 기록을 살펴보며 감을 잡아보세요.

 

클래스 - 상속

패스트 캠퍼스 파이썬 인강 클래스 상속

(예제 1 : 상속 기본 - 상속을 사용하는 방법)

예제1 에서는 먼저 Car라는 부모 클래스를 선언하고 이 클래스에는 자동차의 기본 속성 타입(세단, suv 등)과 색상을 갖고 있게 됩니다. 그리고 각 제조사 별로 자식 클래스를 선언합니다. 예제에서는 BMW와 제가 좋아하는 Volvo자동차 제조사를 Class로 선언하여 진행해 보았습니다.

# 예제1
# 상속 기본
# 수퍼클래스(부모) 및 서브클래스(자식) -> 모든 속성, 메소드 사용 가능

# 라면 -> 속성(종류, 회사, 맛, 면 종류, 이름) : 부모

class Car:
    """
    Super Class(Parent Class)
    """
    def __init__(self, tp, color):
        self.type = tp
        self.color = color
    
    def show(self):
        return 'Car Class "Show Method!"'

class Bmw(Car):
    """
    Sub Class - 1(Child Class)
    """
    def __init__(self, model_name, tp, color):
        super().__init__(tp, color)
        self.model_name = model_name

    def show_model(self) -> None:
        return "Your Car Name : %s" % (self. car_name)

class Volvo(Car):
    """
    Sub Class - 2(Child Class)
    """
    def __init__(self, model_name, tp, color):
        super().__init__(tp, color)
        self.model_name = model_name

    def show_model(self) -> None:
        return "Your Car Name : %s" % (self. car_name)
        
    # Method Overriding : 부모 클래스의 매소드를 재정의
    def show(self):
        return "Car Info : %s %s %s" % (self.model_name, self.type, self.color)
    
    def show2(self):
        print(super().show()) # Parent Method Call
        return "Car Info : %s %s %s" % (self.model_name, self.type, self.color)

파이썬 클래스 상속 사용 방법

(일반적인 상속 클래스 사용 방법)

# 일반 사용
model1 = Bmw('520d', 'sedan', 'red')

print(model1.color) # Super
print(model1.type) # Super
print(model1.model_name) # Sub
print(model1.show()) # Super
print(model1.show_model()) # Sub
print(model1.__dict__) # Print Namespace
print()

(메소드 오버라이딩)

# Method Overriding(오버라이딩)
model2 = Volvo('XC40', 'suv', 'black')

print(model2.show()) # 부모 클래스에 있는 메소드이지만, 자식 클래스가 재정의(오버라이딩) 했을 경우 자식 메소드 호출
print()

(부모 메소드 호출)

# Parent Method Call
model3 = Volvo('XC90', 'suv', 'silver')

print(model3.show2())

<Output>

red
sedan
520d
Car Class "Show Method!"
Your Car Name : 520d
{'type': 'sedan', 'color': 'red', 'model_name': '520d'}

Car Info : XC40 suv black

Car Class "Show Method!"
Car Info : XC90 suv silver

 

(상속 정보 출력 : mro 함수)

# Inheritance Info(상속정보 출력 : mro())
print(Bmw.mro())
print(Volvo.mro())
print()

(예제2 : 다중 상속)

# 예제 2
# 다중 상속 : 너무 많은 다중 상속은 지양..(코드의 복잡도 상승..)
# 시니어 개발자가 되어 개발을 할 경우 코드의 복잡도가 높아지지 않게 코딩해야 함!
class X:
    pass

class Y:
    pass

class Z:
    pass

class A(X, Y):
    pass

class B(Y, Z):
    pass

class M(B, A, Z):
    pass

print(M.mro())
print(A.mro())

<Output>

[<class '__main__.Bmw'>, <class '__main__.Car'>, <class 'object'>]
[<class '__main__.Volvo'>, <class '__main__.Car'>, <class 'object'>]

[<class '__main__.M'>, <class '__main__.B'>, <class '__main__.A'>, <class '__main__.X'>, <class '__main__.Y'>, <class '__main__.Z'>, <class 'object'>]
[<class '__main__.A'>, <class '__main__.X'>, <class '__main__.Y'>, <class 'object'>]

 

파이썬 클래스의 상속과 다중상속에 대해서 학습하였습니다.

특히, 시니어 개발자로 성장하기 위해서 코드의 복잡도에 관한 부분도 많이 신경써야 한다는 강사님의 조언이 큰 도움이 되는 것 같았습니다. 적절하게 상속과 다중상속을 활용하여 좋은 시니어 개발자로의 성장을 목표로 패스트 캠퍼스 파이썬 인강 계속 됩니다!

 

패스트캠퍼스 파이썬 인강 자세한 내용은 아래 링크를 참고해 주세요!

 

https://bit.ly/2WG0IXN