티스토리 뷰
개와 고양이를 추상화 해보자
그리고 다음과 같이 정의했다.
class Cat:
def __init__(self, name, weight=1):
self.name = name
self.weight = weight
def sleep(self):
print("{} sleep...".format(self.name))
def feed(self, food):
self.weight += food
def __str__(self):
return "name={} weight={}".format(self.name, self.weight)
def grooming(self):
print("{} grooming!".format(self.name))
class Dog:
def __init__(self, name, weight=1):
self.name = name
self.weight = weight
def sleep(self):
print("{} sleep...".format(self.name))
def feed(self, food):
self.weight += food
def __str__(self):
return "name={} weight={}".format(self.name, self.weight)
def howl(self):
print("{} howl!".format(self.name))
고양이와 개의 공통의 특징(attribute) 들이 보인다.
이것을 굳이 개와 고양이에 중복되어 정의할 필요가 없다.
또한 개념적으로 이것들은 개의 특징도 고양이의 특징도 아닌
동물의 특징으로 봐야 한다.
동물 클래스를 만들고 이것을 상속하여 보자.
Animal 이란 클래스를 만들고 개와 고양이가 각각 상속하였다.
class Animal:
def __init__(self, age=1, weight=1):
self.age = age
self.weight = weight
def sleep(self):
print("sleep...")
def feed(self, food):
self.weight += food
def __str__(self):
return "age={} weight={}".format(self.age, self.weight)
class Cat(Animal):
def grooming(self):
print("grooming!")
class Dog(Animal):
def howl(self):
print("howl!")
상속한 클래스에서는 부모클래스의 특징을 자식 클래스에서 새로 정의 하지 않는 이상 그래도 사용가능하다.
개와 고양이에서는 동물의 특징을 제외한 개의 특징 고양이의 특징만 정의 하였다.
코드가 한결 나아 젔다.
[overriding: 오버라이딩]
부모클래스에서 정의한 함수를 새로 정의해야 할때가 있다.
class Animal:
def __init__(self, age=1, weight=1):
self.age = age
self.weight = weight
def sleep(self):
print("sleep...")
def feed(self, food):
self.weight += food
def __str__(self):
return "age={} weight={}".format(self.age, self.weight)
class Cat(Animal):
def sleep(self):
print("cat sleep...")
def grooming(self):
print("grooming!")
sleep 이란 함수를 자식 클래스에서 새로 정의하면
부모클래스의 정의는 무시되고 자식클래스의 정의가 우선시 된다.
'python lecture > basic' 카테고리의 다른 글
[edu] decoraotr 인자 받기 (0) | 2019.01.09 |
---|---|
[edu] function (함수) (0) | 2019.01.08 |
[edu] 2진 탐색 (0) | 2018.12.12 |
[edu] 메모리 영역(코드, 데이터, 스택, 힙) (0) | 2018.12.01 |
[edu] stack linkded list with node (스택 링크드 리스트) (0) | 2018.12.01 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- django
- 문서 비교
- 이미지 비교
- 모바일 테마 적용
- 문과 코딩
- 파이썬
- chatbot
- Tistory
- wsgi
- admin.py
- 면접답변
- 장고 플러스친구 자동응답
- GIT
- PuTTYGen
- gitlab
- pycrypto
- 엑셀 비교
- 면접정답
- Python
- 파이썬 입문
- gitignore
- 장고
- 파이썬 강좌
- virtualenv
- 장고 카톡 자동응답
- 파이썬 독학
- 파이썬 프로그래밍
- django chatbot
- 모바일 스킨 적용
- 플러스친구 자동응답
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함