본문 바로가기
Python

파이썬 Class (self , __init__)

by re-hwi 2022. 6. 3.

class는 쉽게 말해서 객체를 만드는 모형 틀이다. class를 굳이 사용하지 않아도 실행하는데에는 지장이 없지만 코드를 간결하고 쉽게 이해할 수 있도록 도와주는 역할을 한다.

 

따라서 파이썬은 class를 지원해 하나의 큰 틀을 만들어 유사한 여러 객체를 찍어낼 수 있다.


Class와 객체

 

Class란 객체의 모음이다. 예를 들어 내가 게임을 하는데 전사 캐릭터를 만든다고 생각해보자.

 

그 게임의 운영자는 게임을 하는 사람들 중에 '전사' 라는 직업을 가진 사람이 많이 있을텐데 하나하나 다 만들어내는것은 비효율적이라고 생각할 것이다.

 

이 때 운영자는 '전사'라는 클래스를 만들고 사용자에게 전사 클래스를 가진 객체 1,2,3...을 나누어 주는것이다. 이처럼 클래스는 재사용이 가능하고 코드를 쉽게 만들 수 있다.

 

메소드

이 때 클래스 안에 def 로 정의된 함수가 있을 것이다. 이것을 '메소드' 라고 부른다. 밑의 내용이 이해가 되질 않는다면 https://re-hwi.tistory.com/58 이곳에서 def에 대해 자세히 알 수 있다. 

 

클래스가 여러 객체를 찍어낸다고 했다. 따라서 클래스의 각 객체들의 메소드의 반환값은 모두 다르다. 이로 인해 self 라는 인자가 생겨났다.

 

쉽게 말하자면 레벨 1인 전사와 레벨 100인 전사가 있다고 가정해보자. 이 때 경험치의 양은 서로 다를텐데 같은 경험치 메소드를 사용하더라도 레벨 1의 레벨업 게이지와 레벨 100의 레벨업 게이지의 양은 다르다.

 

이를 분류?하는것이 self 이다. 따라서 객체 1과 객체 2를 구별하는 역할을 한다. 

 

__init__

사실 이 글을 포스팅 한 이유중 하나가 나도 self와 init에 대해 정확히 알지못해 포스팅하며 다시 공부하려는 목적이였다. 이처럼 이것이 어렵게 느껴지는 것은 당연하고 초보자의 입장에서 쉽게 접하지 못해 어렵게 느껴질 수도 있다.

 

init이란 파이썬에서 제공하는 초기화 메소드이다. 어떤 객체가 생성될 때 자동으로 호출되어 그 객체가 가질 여러 성질을 정해주는 역할을 한다. 

 

따라서 객체가 생성됨과 동시에 init이 실행이 되며 init 메소드 안의 내용이 실행이 된다. 예를 들어 내가 전사 직업을 선택함과 동시에 전사 클래스의 init에 저장되어 있던 여러 능력치들이 내 캐릭터에 들어가는 것과 같은 뜻이다. 

 

class 사용법

 

이제 class에 대한 여러 용어를 배웠으니 class를 어떻게 사용하는지 알아보자.

class character:	# 캐릭터 클래스 생성

	def __init__(self):		# 캐릭터를 생성하자 마자 주어지는 스텟
		str : 10
		dex : 10
		luc : 5
        
	def attack(self):			# 공격을 눌렀을 때 공격함
		print('공격')

이렇게 캐릭터라는 클래스를 만들었으니 객체를 만들어보자 닉네임은 내 이름인 jaehwi로 설정했다.

jaehwi = character ()		# jaehwi라는 character 생성
jaehwi.attack			# character 클래스 안에 있는 attack 메소드 사용

이처럼 변수를 클래스에 선언하고 변수 . 메소드를 사용하면 클래스 안에 있는 메소드를 사용할 수 있다. 

반응형

'Python' 카테고리의 다른 글

python 알아두면 좋은 팁  (0) 2022.07.01
파이썬 파일  (0) 2022.05.27
(Python) def 를 이용한 함수 생성  (0) 2022.05.15
(Python) 숫자 up & down 게임  (0) 2022.05.07
(Python) 숫자 야구 만들기  (0) 2022.05.06

댓글