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


titlecontent의 값은 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
블로그 이미지

쵸잇

,