상속(Inheritance)
객체 지향 프로그래밍(OOP)에서 상속(Inheritance)은
객체들 간의 관계를 구축하는 방법
일반적인 클래스 형태 | 다른 클래스에서 '상속받은' 클래스 형태 |
class BaseClassName: 기반 클래스의 변수, 함수(메서드) 등의 코드 … 기반 클래스의 변수, 함수(메서드) 등의 코드 |
class DerivedClassName(BaseClassName): 파생 클래스의 변수, 함수(메서드) 등의 코드 … 파생 클래스의 변수, 함수(메서드) 등의 코드 |
연습 1
부모 클래스
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def print_info(self):
class_name = self.__class__.__name__
print(f"[{class_name}] name: {self.name}, age:{self.age}")
상속 클래스
class Student(Person):
def study(self):
print('공부를 합니다.')
class Programmer(Person):
def programming(self):
print('프로그래밍을 합니다.')
class Doctor(Person):
def treatment(self):
print('치료를 합니다.')
student = Student('Sooin', 21)
student.print_info()
student.Study()
developer = Programmer('Jonghyuck', 29)
developer.print_info()
developer.programming()
doc = Doctor('kimsaboo',49)
doc.print_info()
doc.treatment()
연습 2
'클래스 변수' 와 '인스턴스 변수' 의 차이
class Dog:
kind = '개과' # 클래스 변수 : 모든 인스턴스가 공유한다.
def __init__(self, name):
self.name = name # 인스턴스 변수 : 각 인스턴스별로 고유한 값을 가진다.
def print_kind(self):
print(self.kind)
def print_name(self):
print(self.name)
Dog 클래스의 클래스 변수 kind 는 모든 인스턴스가 공유해서 쓸 수 있다.
dog1 = Dog('모카')
dog2 = Dog('밀크')
print("▶ 직접 값 출력하기")
print(dog1.kind)
print(dog2.kind)
print(dog1.name)
print(dog2.name, '\n')
print('▶ 함수를 통해 출력')
dog1.print_kind()
dog2.print_kind()
dog1.print_name()
dog2.print_name()
'Python' 카테고리의 다른 글
[Pandas] 컬럼명 변경하기/ 순서바꾸기 (0) | 2022.10.22 |
---|---|
[차원축소와 군집분석] NMF : Non-negative Matrix Factorization (0) | 2022.10.04 |
[Python] 웹크롤링? 웹 스크래핑 (0) | 2022.08.28 |
[Python] 모듈(Module) (0) | 2022.08.28 |
[Python] Data type : 딕셔너리(Dictionary) 와 셋(Set) (0) | 2022.08.22 |