본문 바로가기

Python

[파이썬-중급] 클래스

파이썬의 클래스에 대해 알아보자.

- C++과 모듈라3 문법을 계승하였다.

- 파이썬에서 간단하게 클래스를 정의할 수 있다.

- 연산자 오버로딩이 가능하다. (이것이 무엇인지 자세한 설명은 추후 올리겠습니다.)

- 다중 상속


클래스라는 개념은 이해하기 어려운 개념이다. 최대한 개념을 잘 설명하려고 노력했다.

먼저 클래스와 관련된 단어는 속성과 메서드가 있다. 간단하게 말해서 우리는 사물의 특징을 코드화 하는 것이다.

그래서 사물의 속성, 사물의 동작을 통해서 클래스를 한번 정의해보자.


우리가 게임을 만든다고 가정하겠다. 그러면 캐릭터는 객체와 대응된다.

캐릭터의 부가 정보인 체력, 공격력, 방어력 등은 속성과 대응된다.

그리고 캐릭터가 어떠한 동작을 하는 것은 메서드와 대응된다.

메서드라는 말에 너무 이상하게 생각할 것 없다. 메서드는 그냥 클래스에서 쓰는 함수라고 생각하면 된다.


 class Name :


     def__init__(self, v1, v2, v3, …) :

         self.v1 = v1

         self.v2 = v2


     def method :

         print (self.v1)

         pirnt (self.v2)


 object = name(10, 100)

 object.method()


이제부터 설명을 시작하겠다. 꼼꼼히 잘 읽어보길 바란다.

1. 클래스는 정의할 때 class라고 적고 Name처럼 자유롭게 이름을 지을 수 있다. 첫 글자가 대문자 인 것은 관행이다.

2. 처음에 사물의 속성을 정의해야 할텐데 프로그래머마다 속성의 변수이름을 막 지을 수 있으므로 __init__()이라는 메서드를 사용한다.

그러면 객체를 만들었을 때 초기 변수값을 설정한다. 예시에서는 v1과 v2가 속성을 의미한다. 따라서 object라는 객체가 만들어지면 name이라는 클래스에 v1과 v2에 각각 10과 100이 저장된다.

3. 예시에서 나오는 self는 호출한 객체의 변수명으로 이해하면 쉽다. 즉, 생성한 객체 이름이다.

=> 객체명 = 클래스명 (인수1, 인수2, 인수3, ~, v*)

=> __init__(self, v1, v2, v3, …, v*)

객체명이 self에 대응되고, 각각 순서대로 인수*와 v*가 대응된다.

4. 객체명.메소드명()은 클래스에 있는 메소드를 그 객체가 가진 속성을 기반으로 실행시킨다.


클래스는 이해하기 힘든 개념이다. 한 두번 연습한다고 개념을 정확히 알기 어려우며 다양한 코드를 통해 습득하는 것이 좋다.

'Python' 카테고리의 다른 글

[파이썬-중급] 예외처리  (0) 2018.11.02