널널한 교수의 기초 파이썬
16_1. 상속과 super()
창원대학교 정보통신공학과 박동규
동영상 강의자료와 코드
• 동영상 강의(널널한 교수의 기초 파이썬)
• https://www.youtube.com/watch?
v=TK6RLGaM3Ao&list=PL2P1Vm9k53HOEn-QYXAfblQWkR0OW9mKX
• 소스코드( GitHub )
• https://github.com/dongupak/Basic-Python-Programming
소프트웨어 개발
http://www.visualcapitalist.com/millions-lines-of-code/
수천만 라인의 명령어 코드가 소프
트웨어를 만드는데 필요하다
엄청난 양의 코드를 매번 만든다면?
매우 비효율적이다
윈도 XP와 윈도 7은 공유할 수 있는
코드가 많을 것이다
https://www.shutterstock.com/ko/image-vector/software-web-developer-programming-
codejavascript-abstract-586997042?src=vjg20aIhH-CgDQIwEcNE5g-1-5
엄청난 양의 코드를 효율적으로??
상속(inheritance)을 활용하자
상속
• 우리는 예전에 만들어진 코드를 이용하여 새로운 기능을 개발하는
경우가 많다

• 클래스의 상속 기능을 사용하면 부모 클래스에서 만들어둔 기능과
속성을 물려받을 수 있다

• 상속은 객체지향 프로그래밍의 매우 뛰어난 기능이다

• 새 클래스를 정의할 때 기존의 클래스를 사용한다
상속(inheritance)의 예
Person
firstName, lastName : 속성
name() : 메소드
Empolyer
position : 속성, info() : 메소드
Employee
staffID : 속성, info() : 메소드
Person 클래스는 Employer과 Employee 클래스의 공통적인 속성이 있는데 이를 자식에게
상속하면 자식은 공통적인 부분을 재코딩하지 않아도 된다
부모클래스 : 상속하는 클래스, 슈퍼 클래스, 기본 클래스

자식클래스 : 상속받는 클래스, 서브 클래스, 파생 클래스
자식클래스 자식클래스
부모클래스
고용인 종업원
문법
class A:
def __init__(self):
….
def funcA():
….
class B(A):
def __init__(self):
….
def funcB():
….
() 안에 부모 클래스의 이름을 적는다
inheritance_ex1.py
수행결과
Lab
super()
• 부모 클래스의 이름을 알고 있을 경우 Person.__init__ 과 같이 부모 클
래스의 이름과 .을 사용하여 부모클래스의 메소드를 호출 할 수 있다

• 하지만 super() 를 통해 부모 클래스의 메소드를 손쉽게 이용할 수 있
다

• 부모 클래스를 명시적으로 적어줄 필요가 없으므로 프로그램의 유지
보수가 쉽다
Person.__init__()
super().__init__()
Person.__init__(self, firstname, lastname)
super().__init__(firstname, lastname)
super()가 메소드를 호출할때는 self를 자동으로 바운딩하는 메소드에

전달해주므로 self를 사용할 필요가 없다
inheritance_ex2.py
Lab
감사합니다

16 1 상속과super()