1. 새로운 내장함수를 만들어서 활용해보자.
__init__함수도 중요한 기능을 갖췄지만 인스턴스를 처음 만들 때만 호출되므로 이후에는 쓸 일이 없다.
이번 함수는 게시글 조회수를 올려주는 기능을 갖고 있다.
1 2 | def read(self): self.view_count = self.view_count + 1 | cs |
read함수는 view_count 변수에 접근해 조회수에 1을 더해준다.
1 | article1.read() | cs |
인스턴스 article1에 해당하는 글을 조회했다고 가정하고 작성한 코드이다.
인스턴스에 .을 붙이고 read()를 입력하면 read함수가 호출된다.
출력해보자.
1 | print(article1.view_count) >> 1 | cs |
숫자 '1'이라고 조회수가 출력된다.
사실 read함수 없이 조회수를 올리는 방법이 있긴 하다!
1 | article1.view_count = article1.view_count + 1 | cs |
코드량도 늘어나고 번거로운 작업이 될 뿐이다.
2. 클래스 상속하기
개발언어 대부분이 영어권에서 시작된 거라 가끔 사용하는 어휘가 낯설게 느껴진다.
상속은 inheritance라는 영단어를 그대로 해석한 것이다.
우리식으로는 '물려받았다'라고 볼 수 있다. 간단하게 '똑같은 걸 가져다 쓴다'라면 될까싶다.
클래스도 물려받을 수 있다는 건가? 그렇다.
class 클래스명(상속받을 클래스명):
우리도 상속 받아보자.
1 2 | class TistoryArticle(Article): source = "티스토리" | cs |
상속만 받기 아쉬워서 변수를 하나 더 지정했다.
새로만든 TistoryArticle 클래스는 앞서 만든 Article 클래스의 설계도면을 고스란히 갖추고 있으면서, source라는 변수를 추가했다.
Article 클래스를 상속 받은 TistoryArticle 클래스를 활용하여 인스턴스를 만들어보자.
1 2 | tistory_article = TistoryArticle("게임", "게임은 쉬워요") print(tistory_article.title) >> 게임 | cs |
title과 content의 값은 Article 클래스에서 했던 것처럼 똑같이 작성하면 된다.
그리고 title을 출력하면 입력한대로 결과가 나온다.
*심화과정으로 override를 배워보자.
1 2 3 4 5 | class TistoryArticle(Article): source = "티스토리" def read(self): self.view_count = self.view_count + 2 | cs |
기존 read함수에서 숫자 1을 2로 변경했다.
함수 호출시 조회수를 출력하면?
1 2 | tistory_article.read() print(tistory_article.view_count) >> 2 | cs |
덮어씌운 격인데 영어 override의 뜻인 '우선순위로 두다'를 반영한 것이다.
필요시 상속 받은 클래스에서만 사용할 수 있도록 함수 수정이 가능하다는 것이다.
'코딩 연습 > Python' 카테고리의 다른 글
함수 (0) | 2018.10.04 |
---|---|
for 문과 while 문 (0) | 2018.10.03 |
클래스(class) (2) - 내장함수 활용하기 (0) | 2018.10.02 |
클래스(class) (1) (0) | 2018.10.01 |