ABOUT ME

IT와 컴퓨터 관련 팁, 파이썬 등과 아파트 정보, 일상적인 경험 등의 생활 정보를 정리해서 올리는 개인 블로그

  • [python] 파이썬 클래스 상속(inheritance)
    코딩 연습/코딩배우기 2020. 9. 10. 11:48
    반응형

     

    ■ 파이썬의 클래스 상속(inheritance)

    # 부모클래스가 갖는 모든 메서드가 자식클래스에도 담긴다.
    # 자식클래스에는 별도의 메서드를 추가할 수 있다.

    class Father:
        def run(self):
            print('so fast..!')
    
    
    class Son(Father):
        def jump(self):
            print('so high..!')
    
    
    def main():
        s = Son()
        s.run()  # so fast..!  / 상속된 메서드
        s.jump()  # so high..!  / 추가된 메서드
    
    main()
    

     

    ■ 메서드 오버라이딩

    # 상속 관계에서 부모클래스의 메서드와 동일한 이름의 메서드를 자식클래스가 정의하는 것
    # 이 경우, 부모메서드는 보이지 않는 상태가 된다.(호출 불가 상태)

    class Father:
        def run(self):
            print('so fast..!')
            
            
    class Son2(Father):
        def run(self):  # Father 클래스의 run 메서드 가림(오버라이딩)
            print("so fast, son's style")
    
    
    def main():
        s2 = Son2()
        s2.run()  # so fast, son's style  / Son2의 run 메서드 호출
        
    main()
          
    # Son2의 객체에는 Father의 run과 Son2의 run이 모두 존재한다.
    

     

    # Father의 run이 가려졌을 뿐, 가려진 run도 호출할 수 있다.

    class Father:
        def run(self):
            print('so fast..!')
            
    
    class Son3(Father):
        def run(self):
            print("so fast, son's style")
        
        def run2(self):
            super().run()  # 부모클래스의 run() 호출 (가려진 run)
    
    
    def main():
        s3 = Son3()
        s3.run()  # so fast, son's style
        s3.run2()  # so fast..!
    
    main()
    

     

    good4me.co.kr

     

    ■ __init__ 메서드 오버라이딩

    class Car:
        def __init__(self, carnumber, fuel):
            self.carnumber = carnumber
            self.fuel = fuel
        
        def drive(self):
            self.fuel -= 10
        
        def add_fuel(self, f):
            self.fuel += f
        
        def show_info(self):
            print('car type :', self.carnumber)
            print('fuel :', self.fuel)
        
    
    class Truck(Car):
        def __init__(self, carnumber, fuel, c): # 부모클래스 변수 초기화값도 같이 전달받음
            super().__init__(carnumber, fuel)  # 부모 __init__ 호출 / 변수 초기화
            self.cargo = c  # 자식 변수 초기화
                
        def add_cargo(self, c):
            self.cargo += c
        
        def show_info(self):
            super().show_info()  #부모클래스 show_info 메서드 호출
            print('cargo :', self.cargo)
    
    
    def main():
        t = Truck('43럭5959', 0, 0)
        t.add_fuel(100)
        t.add_cargo(50)
        t.drive()
        t.show_info()
    
    main()
    
    
    
    [실행 결과]
    
    car type : 435959
    fuel : 90
    cargo : 50
    

     

    [참고자료] 윤성우의 열혈파이썬 중급편

     

    반응형
Designed by goodthings4me.