클래스를 흔히 붕어빵 틀 또는 설계도에 비유를 많이 든다. 붕어빵 틀이 있으면 붕어빵을 여러 개 찍어 낼 수 있다.
그리고 붕어빵 틀이 붕어빵의 역할을 할 수는 없다. 붕어빵 틀을 통해서 붕어빵을 만든다.
설계도도 마찬가지다. 설계도를 이용해 제품을 만들어야 사용이 가능하지, 설계도 차제만으로는 아무것도 할 수 없다.
이제 클래스를 하나 만들어보자.
class Human :
name = "고길동"
age = 40
def speak(self):
print("말을 한다.")
사람이라는 클래스를 만들었다. 사람의 이름은 고길동. 나이는 40세. 그리고 말하는 기능을 가지고 있다. 이제 고길동 씨를 소환(?)해보자.
class Human :
name = "고길동"
age = 40
def speak(self):
print("말을 한다.")
gil_dong = Human()
gil_dong.speak()
변수 gil_dong은 Human이라는 class를 이용해 만든 사람이다. 붕어빵틀과 붕어빵 관계와 비교하면
Human클래스는 붕어빵틀, gil_dong은 붕어빵이라 할 수 있겠다.
위 예제는 사람을 만들어서 사람이 말하게 하는 예제다. 정확하게는 Human 클래스가 가지고 있는 speak 함수를 실행시킨 것이다.
실행해보자.
말을 한다.
이제 사람 클래스에 기능을 하나 더 추가해보자. 자기소개하는 기능을 추가해서 시켜보자.
class Human :
name = "고길동"
age = 40
def speak(self):
print("말을 한다.")
def introduce(self):
print("내 이름은 ", self.name,"입니다.")
gil_dong = Human()
gil_dong.introduce()
예제를 실행해보자.
내 이름은 고길동 입니다.
introduce라는 함수를 만들고 이름을 가져오기 위해 self.name을 사용했다. self는 클래스 자신이 가지고 있는 변수와 함수에 접근하기 위해 필요하다고 생각하면 된다. Human을 Class라고 하고, Human 클래스를 통해 만들어진 gil_dong을 instance(인스턴스)라고 한다.
이 세상에는 사람 이름이 고길동인 사람만 있는 게 아니다. 사람 이름도 제각각, 나이도 제각각이다. 하지만 다 자기소개는 할 수 있고 말도 할수 있다. Human 클래스를 수정해보자.
class Human :
def __init__(self, name, age):
self.name = name
self.age = age
def speak(self):
print("말을 한다.")
def introduce(self):
print("내 이름은 ", self.name,"입니다.")
go_gil_dong = Human("고길동", 40)
hong_gil_dong = Human("홍길동", 20)
go_gil_dong.introduce()
hong_gil_dong.introduce()
Human 클래스를 수정했다. __init__이라는 함수가 추가됐다. 이 함수는 인스턴스가 생성될 때 처음 한 번만 실행된다. 이 함수를 통해서 외부로부터 이름과 나이를 받아서 이름과 나이를 설정한다.
이제 고길동과 홍길동 인스턴스를 각각 만들었다. 고길동은 이름이 고길동이고 40세다. 홍길동은 이름이 홍길동이고 20세다. 이제 서로(?) 자기소개를 해보자.
내 이름은 고길동 입니다.
내 이름은 홍길동 입니다.
이번에는 고길동 class를 직접 만들어 보겠다. 그런데 Human class에 있는 말하기와 자기소개는 고길동이 할 수 있다. Human class가 가진 기능을 그대로 가져올 것이다.
class Human:
def speak(self):
print("말을 한다.")
def introduce(self):
print("내 이름은 ", self.name, "입니다.")
class GoGillDong(Human):
name = "고길동"
age = 40
go_gil_dong = GoGillDong()
go_gil_dong.introduce()
GoGillDong class를 만들었다. 그런데 이번에는 (Human)이 들어가 있다. 이것을 상속(Inheritance)이라고 한다. 상속이라는 말 그대로 물려받는 것이다. Human class가 가지고 있는 speak함수와 introduce함수를 물려받아서 사용이 가능하다. 그래서 GoGillDong class에는 함수가 없지만 자기소개를 할 수 있는 것이다.
내 이름은 고길동 입니다.
'프로그래밍' 카테고리의 다른 글
파이썬 기초 - 패키지와 추천 패키지 (0) | 2020.11.16 |
---|---|
파이썬기초 - 파이썬을 이용해 턴제 게임 만들기 (2) | 2020.11.15 |
파이썬기초 - 반복문 (0) | 2020.11.15 |
파이썬기초 - 조건문 (0) | 2020.11.15 |
파이썬 기초 - 변수 (0) | 2020.11.14 |
댓글