다시 앞서 만든 코드를 살펴보자.
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 |
author와 view_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 클래스에는 미리 언급한 author와 view_count 변수와 값을 남겨두었다.
인스턴스를 만들면 2개의 변수는 항상 동일하게 접근할 수 있을것이다.
def는 함수를 뜻하는데 정확한 개념은 나중에 별도로 정리할 것이다.
일반 함수와 다른 점은 이 함수는 클래스 안에서 쓰인다는 것인데, 클래스 내장함수라고도 불린다.
__init__이라는 함수의 init은 initializer를 축약한 것으로 초기 내용을 설정해주는 역할로 생성자라고 불린다.
즉 인스턴스를 새로 만들면 __init__함수가 우리가 원하는 변수의 값을 처음에 셋팅해준다.
그리고 괄호 안에 매개변수(입력 받은 값을 넘겨주는 역할)를 지정해주는데, 여기서 self는 뭐냐?
self는 Article 클래스 자기자신이다. 영어의 myself의 의미와 유사하다.
클래스 내장함수를 쓸 때는 이유불문 암묵적인 약속처럼 해당 클래스를 사용한다는 뜻으로 항상 self를 먼저 붙여준다.
나머지 2개의 매개변수는 새로운 인스턴스에서 생성되는 변수의 인자(변수의 값)를 넘겨주는데 도움을 준다.
1 2 | self.title = title self.content = content | cs |
2줄의 코드는 인스턴스의 변수를 접근하는 방식과 동일하게 이해하면 된다.
self.title는 Article 클래스의 title 변수에 접근해서, __init__함수의 매개변수 title을 통해 변수의 값을 넘겨받는다.
그럼 변수의 값(인자)을 어디서 받나?
1 2 3 | article1 = Article("개발", "개발은 쉬워요") article2 = Article("취업", "취업은 쉬워요") article3 = Article("운동", "운동은 쉬워요") | cs |
인스턴스 = 클래스(인자1, 인자2, …)
인스턴스를 만들때, 클래스와 더불어 순차적으로 매개변수의 인자를 입력한다.
"개발"은 첫 매개변수 title을 통해 article1 인스턴스의 title 변수의 인자로 지정된다.
최종적으로 우리가 원하는 형태의 클래스가 만들어진 것이다.
어렵지만 이해를 위해 다시 살펴보자.
이 메커니즘을 다시 역으로 돌아보면,
인스턴스를 새로 만들때 클래스를 활성화시키면서 동시에 내장함수인 __init__을 호출하여 매개변수를 통해 입력한 인자를 넘겨준다.
그럼 article1 인스턴스는 Article 클래스의 기본골격인 author와 view_count를 유지하면서, 함수를 통해 title과 content을 추가로 갖게 된다.
'코딩 연습 > Python' 카테고리의 다른 글
함수 (0) | 2018.10.04 |
---|---|
for 문과 while 문 (0) | 2018.10.03 |
클래스(class) (3) - 내장함수 활용 및 클래스 상속 (0) | 2018.10.03 |
클래스(class) (1) (0) | 2018.10.01 |