지난 포스트에서는 기본적인 클래스 생성과 사용법에대해 알아보았는데요, 이번 포스트는 그 클래스 에서 변수 초기화 방법과 self 인자에 대해 알아보겠습니다.
self
self 라는 개념은 저는 c와 c++할때 경험해보지 못했기 때문에 파이썬을 공부하면서 처음 접한 개념이였습니다.
기본적으로 self 인자는 그 객체의 적절한 속성과 메소드를 찾기위해 사용하는 인자입니다.
<예시>
이전 포스트에서 사용했던 예시를 다시 보면, seashark=Test1() 라는 명령어로 객체를 만들게됩니다.
그 이후 seashark.displayInfo() 라는 명령을 내리는데 위에 코드를 보시면 def displayInfo(self) 라는 선언문이 있기 때문에 실행시 보이지는 않지만 self 를 찾아서 넣게 됩니다. 실행시 이 메소드가 어떤 클래스에 있는지는 self 값을 통해 알게되는것입니다.
기본적으로 클래스 안에 선언되어있는 모든 함수들은 self인자가 포함되어 있습니다. 그렇기 때문에 처음에 코드를 짤때 인자로 아무것도 안 넣었는데 인자값이 없다고 에러가 나올때는 self 가 빠져있다고 생각하시면 됩니다.
객체 초기화 메소드
__init__()로 알려져 있는 객체 초기화 메소드 입니다.
일단 예제부터 보시겠습니다.
위에 코드부터 확인해 보겠습니다.
첫 4개의 라인에서는 예전과 똫같이 선언과 3가지 변수를 만들어 주었습니다. 이번에는 집중해서 볼 변수는 classname 변수 입니다. 처음에는 'NewClass'로 초기화를 시켰지만 밑에 메소드를 보시면 달라집니다.
def __init__(self, initname):
코드
이 메소드는 클래스가 생성될때 자동으로 실행되는 메소드 입니다. c++ 에서의 클래스 초기화와 비슷하다고 보시면 됩니다.
예제의 코드를 들여다보면 self.classname = initname 이라고 되어있는데 생성될때 들어오는 인자값인 initname 을 그 객체의 classname 값에 대입하라는 의미입니다.
다시한번 살펴보면
seashark1 = Testclass2('initname')
freedushark = Testclass2('freeduname') 이라는 두가지 생성자를 만들었고 displayInfo() 로 정보를 띄웠을때
결과화면에는 initname 그리고 freeduname 으로 나와있는것을 확인 할 수 있습니다.
기본적으로 인자값은 몇개가 들어가도 상관이 없기 때문에 한 객체의 여러가지 변수를 초기화 시켜줄때 꼭 사용하도록 합시다.
반응형
'프로그래밍 공부 ' 카테고리의 다른 글
[프로그래밍] 객체지향 프로그래밍이란? 2편 기본 개념 (0) | 2018.06.11 |
---|---|
[프로그래밍] 객체지향 프로그래밍이란? 1편 기본 개념 (0) | 2018.06.09 |
[Python] 객체지향 프로그래밍의 기초 Class에대해 알아보자. (1) (0) | 2018.06.08 |
[Python] 계산기를 만들어보자. (class 없이..) (0) | 2018.06.06 |
[Python] 파이썬 기본 문법 2편 : 조건문, 그리고 루프 (0) | 2018.06.05 |