-
[Python] 24. 상속Programming/Python 2021. 7. 25. 15:52
[1] 상속이란?
class human : def __init__(self, name, age, blood_type) : self.name = name self.age = age self.blood_type = blood_type def show(self) : print(f"저의 이름은 {self.name}, 나이는 {self.age}, 혈액형은 {self.blood_type}") class khumsfcr(human) : def __init__(self, name, age, blood_type, sex, glass) : human.__init__(self, name, age, blood_type) self.sex = sex self.glass = glass khumsfcr = khumsfcr("john", 24, "A", "male", "X") khumsfcr.show()
저의 이름은 john, 나이는 24, 혈액형은 A
- 상속이란, 부모 클래스(Base class)가 파생 클래스(Derived class)에 멤버변수, 메소드 등을 상속해주는 것을 의미한다.
- human이라는 클래스를 상속받은 파생 클래스 khumsfcr은, 기존 human 클래스에 있던 멤버변수 name, age, blood_type을 가지고 있으며, 메소드 show또한 가지고있다.
- 상속 시 주의해야할 점은, 파생 클래스의 생성자 정의이다. 파생 클래스에서의 생성자를 정의할 때, 부모 클래스의 생성자를 이용하여 정의해야하며 추가적인 멤버 변수 또한 정의해야한다.
[2] 메소드 오버라이딩
class human : def __init__(self, name, age, blood_type) : self.name = name self.age = age self.blood_type = blood_type def show(self) : print(f"저의 이름은 {self.name}, 나이는 {self.age}, 혈액형은 {self.blood_type}") class khumsfcr(human) : def __init__(self, name, age, blood_type, sex, glass) : human.__init__(self, name, age, blood_type) self.sex = sex self.glass = glass def show(self): print(f"저의 이름은 {self.name}, 나이는 {self.age}, 혈액형은 {self.blood_type}, 성별은 {self.sex}, 안경은 {self.glass}") khumsfcr = khumsfcr("john", 24, "A", "male", "X") khumsfcr.show()
저의 이름은 john, 나이는 24, 혈액형은 A, 성별은 male, 안경은 X
- 부모 클래스 human의 메소드 show를, 파생 클래스 khumsfcr에서 재정의한다. 이처럼 메소드를 파생 클래스에서 재정의 하는 것을 '메소드 오버라이딩'이라고 칭한다.
- 위 코드의 결과와 [1]의 결과를 통해 메소드 show가 정상적으로 오버라이딩 되었음을 확인할 수 있다.
[3] 다중 상속
class human : def __init__(self, name, age, blood_type) : self.name = name self.age = age self.blood_type = blood_type def show(self) : print(f"저의 이름은 {self.name}, 나이는 {self.age}, 혈액형은 {self.blood_type}") class developer : def __init__(self, language) : self.language = language class khumsfcr(human, developer) : def __init__(self, name, age, blood_type, sex, glass, language) : human.__init__(self, name, age, blood_type) developer.__init__(self,language) self.sex = sex self.glass = glass def show(self): print(f"저의 이름은 {self.name}, 나이는 {self.age}, 혈액형은 {self.blood_type}, 성별은 {self.sex}, 안경은 {self.glass}, 다룰 수 있는 언어는 {self.language}") khumsfcr = khumsfcr("john", 24, "A", "male", "X", ["Python", "C++", "C"]) khumsfcr.show()
저의 이름은 john, 나이는 24, 혈액형은 A, 성별은 male, 안경은 X, 다룰 수 있는 언어는 ['Python', 'C++', 'C']
- 다중 상속이란, 부모 클래스가 2개 이상인 것을 의미한다. 2개 이상의 부모 클래스를 상속받는 파생 클래스는 부모 클래스의 메소드, 멤버변수 등을 상속받는다.
*본 글은 코딩 유튜버 '나도코딩'님의 무료강의를 바탕으로 내용을 정리 및 추가한 글입니다.
https://www.youtube.com/watch?v=kWiCuklohdY&t=5934s
'Programming > Python' 카테고리의 다른 글
[Python] 26. 예외 처리 (0) 2021.07.26 [Python] 25. pass와 super, isinstance() (0) 2021.07.25 [Python] 23. 클래스(class) (0) 2021.07.25 [Python] 22. with (0) 2021.07.20 [Python] 21. 피클(pickle) (0) 2021.07.20