'코딩 연습'에 해당되는 글 62건

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



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
블로그 이미지

쵸잇

,

클래스는 수많은 데이터를 효율적으로 관리 및 수정하는데 도움을 준다.

데이터베이스를 공부하면 자주보게 될 클래스이다. 각종 데이터를 저장하고 관리한다.


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



코드 설명을 하자면,

게시글의 속성 4가지인 제목(title), 글쓴이(author), 내용(content), 조회수(view_count)와 그의 데이터를 보여주고 있다. 

첫 글은 글쓴이 "홍길동"이 쓴 "개발" 제목의 "개발은 쉬워요"라는 내용을 가지고 현재 조회수는 0이다.

우리는 지금 세 개의 글을 가지고 있다.


아직은 게시글의 수가 적어서 한 눈에 들어와 수정이 용이하다.

차츰 게시글이 쌓이면 코드량은 폭발적으로 늘어난다.

클래스 역할이 여기서 발휘하게 된다.


첫번째 게시글로 간단하게 클래스를 만들어보자.


1
2
3
4
5
class Article:
    title = "개발"
    author = "홍길동"
    content = "개발은 쉬워요"
    view_count = 0
cs



클래스 이름을 게시글에 해당하는 Article로 정했다. (클래스명은 반드시 첫 글자를 대문자로 작성한다.)

나머지는 우리가 작성한 첫번째 게시글의 데이터를 입력했다.

이제 클래스는 만들어졌다. 벌써?


우린 이 Article 클래스를 가지고 4줄의 첫번째 게시글 데이터를 한 줄로 줄여볼 것이다.


1
article1 = Article()
cs



이 짧은 한 줄의 코드가 첫번째 게시글(article1)에 해당한다. 

Article 클래스의 4가지 속성과 그에 부합하는 값을 가진 이 데이터를 우린 앞으로 객체 또는 인스턴스라 부를 것이다.

클래스를 변수의 값으로 대입하려면 반드시 소괄호()를 붙여줘야 기능을 한다.


첫번째 게시글이 맞는지 확인하기 위해 article1 인스턴스의 title을 접근하여 출력해보자.

(인스턴스의 속성에 접근하려면 '.'을 찍어줘야한다.)


1
2
print(article1.title)
>> 개발
cs



우리가 작성한 "개발"이 출력됨을 확인할 수 있다.


1
2
3
4
5
6
title1 = "개발"
author1 = "홍길동"
content1 = "개발은 쉬워요"
view_count1 = 0
 
article1 = Article()
cs



4줄의 코드가 1줄로 줄어드는 마법을 경험했다.

다음은 함수를 활용하여 두번째, 세번째 게시글 데이터를 담고 있는 인스턴스를 보다 손쉽게 만들어보자.

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

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

쵸잇

,