다시 앞서 만든 코드를 살펴보자.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
title1 = "개발"
author1 = "홍길동"
content1 = "개발은 쉬워요"
view_count1 = 0
 
title2 = "취업"
author2 = "홍길동"
content2 = "취업은 쉬워요"
view_count2 = 0
 
title3 = "운동"
author3 = "홍길동"
content3 = "운동은 쉬워요"
view_count3 = 0
cs


authorview_count 변수가 가지는 값이 "홍길동", "0"으로 동일하다.




1
2
3
4
5
6
7
8
9
10
11
class Article:
    author = "홍길동"
    view_count = 0
 
    def __init__(self, title, content):
        self.title = title
        self.content = content
 
article1 = Article("개발""개발은 쉬워요")
article2 = Article("취업""취업은 쉬워요")
article3 = Article("운동""운동은 쉬워요")
cs


이게 뭔가? 라고 생각되는데 하나씩 차근차근 살펴보자.


Article 클래스에는 미리 언급한 authorview_count 변수와 값을 남겨두었다. 

인스턴스를 만들면 2개의 변수는 항상 동일하게 접근할 수 있을것이다.


def함수를 뜻하는데 정확한 개념은 나중에 별도로 정리할 것이다. 

일반 함수와 다른 점은 이 함수는 클래스 안에서 쓰인다는 것인데, 클래스 내장함수라고도 불린다.


__init__이라는 함수의 init은 initializer를 축약한 것으로 초기 내용을 설정해주는 역할생성자라고 불린다.

즉 인스턴스를 새로 만들면 __init__함수가 우리가 원하는 변수의 값을 처음에 셋팅해준다.

그리고 괄호 안에 매개변수(입력 받은 값을 넘겨주는 역할)를 지정해주는데, 여기서 self는 뭐냐?

self는 Article 클래스 자기자신이다. 영어의 myself의 의미와 유사하다. 

클래스 내장함수를 쓸 때는 이유불문 암묵적인 약속처럼 해당 클래스를 사용한다는 뜻으로 항상 self를 먼저 붙여준다.

나머지 2개의 매개변수는 새로운 인스턴스에서 생성되는 변수의 인자(변수의 값)를 넘겨주는데 도움을 준다. 



1
2
self.title = title
self.content = content
cs

 


2줄의 코드는 인스턴스의 변수를 접근하는 방식과 동일하게 이해하면 된다.

self.titleArticle 클래스의 title 변수에 접근해서, __init__함수의 매개변수 title을 통해 변수의 값을 넘겨받는다.


그럼 변수의 값(인자)을 어디서 받나?



1
2
3
article1 = Article("개발""개발은 쉬워요")
article2 = Article("취업""취업은 쉬워요")
article3 = Article("운동""운동은 쉬워요")
cs


인스턴스 = 클래스(인자1, 인자2, …)


인스턴스를 만들때, 클래스와 더불어 순차적으로 매개변수의 인자를 입력한다.

"개발"은 첫 매개변수 title을 통해 article1 인스턴스의 title 변수인자로 지정된다.

최종적으로 우리가 원하는 형태의 클래스가 만들어진 것이다. 


어렵지만 이해를 위해 다시 살펴보자.


이 메커니즘을 다시 역으로 돌아보면,

인스턴스를 새로 만들때 클래스를 활성화시키면서 동시에 내장함수인 __init__을 호출하여 매개변수를 통해 입력한 인자를 넘겨준다.

그럼 article1 인스턴스Article 클래스의 기본골격인 authorview_count를 유지하면서, 함수를 통해 titlecontent을 추가로 갖게 된다.


'코딩 연습 > Python' 카테고리의 다른 글

함수  (0) 2018.10.04
for 문과 while 문  (0) 2018.10.03
클래스(class) (3) - 내장함수 활용 및 클래스 상속  (0) 2018.10.03
클래스(class) (1)  (0) 2018.10.01
블로그 이미지

쵸잇

,