티스토리 뷰
[Python] 클래스
Python 클래스란?
클래스는 똑같은 무엇인가를 만들어내는 설계도면과 같습니다. 예를 들어 밀리터리 게임의 캐릭터를 만든다고 하면 캐릭터 특성별로 클래스를 만들어 프로그래밍 할 수 있습니다.
프로그래밍을 통해 밀리터리 게임 속 통신병 캐릭터를 10명 만든다고 가정했을 때, 우리는 통신병 캐릭터 클래스를 통해 10명의 동일한 통신병을 만들어 낼 수 있습니다.
이렇게 클래스를 통해 만들어진 통신병 캐릭터를 파이썬에선 오브젝트라고 지칭합니다. 이러한 클래스는 캐릭터 특성별로 여러개의 클래스를 만들어 사용할 수 있습니다.
클래스를 통해 생성된 오브젝트는 속성(Attribute)과 메소드(Method)로 구성됩니다. 메소드는 클래스 안에 있는 함수로 이해할 수 있습니다.
즉, " 클래스 > 오브젝트 > 속성, 메소드 "로 구성됩니다.
속성은 통신병이라는 캐릭터를 생성할 때 공통으로 가지는 기본 능력치 값 같이 미리 정의할 수 있는 것이라고 생각할 수 있습니다.
메소드는 통신병이라는 캐릭터가 액션을 취할 수 있는 일종의 스킬 종류라고 생각할 수 있습니다.
클래스 & 메소드 만들기
클래스 생성 문법
코드 class character: # 클래스 정의 def signal(self): # 메소드 정의 첫번째 인자 값은 반드시 self를 지정해야합니다. print("signal ready") # signal 메소드 호출 시 실행될 코드 jake = character() # jake 변수에 character 클래스 대입 jake.signal() # jake 변수에 character 클래스의 signal 메소드 대입 결과 signal ready # signal 메소드가 실행되어 "print("signal ready") 실행 |
메소드 인자값 대입
코드 class character: # 클래스 정의 def signalname(self, name, age): # 매소드 정의 인자값 첫번째는 반드시 self로 지정 print("my name is %s" % name) # 매소드에 name 인자값 대입 print("my age is %d" % age) # 메소드에 age 인자값 대입 jake = character() jake.signalname('ossian',30) 결과 my name is ossian my age is 30 |
메소드 인자값 대입 방법
self를 인자값으로 반드시 입력해야 하는 이유는 signalname 메소드를 호출한 변수가 jake이며, jake 변수에게 호출된 값을 변환하기 위함입니다.
속성 만들기
속성 생성 문법
클래스의 속성은 " __init__ " 메소드를 사용하여 정의할 수 있습니다. 미리 정의된 속성 값을 통해 클래스의 상속을 통하여 signal 메소드에서 인자 값을 사용합니다.
코드 class character: # character 클래스 정의 def __init__(self, name, level, skill): # __init__ 메소드로 속성 정의 self.name = name self.level = level self.skill = skill self.cha = 10 self.wiz = 20 self.str = 21 def signal(self): print('캐릭터 명 : %s' % self.name) # __init__ 메소드에서 self.name 변수를 대입하여 할당 print('캐릭터 레벨 : %d' % self.level) # __init__ 메소드에서 self.level 변수를 대입하여 할당 print('캐릭터 스킬 : %s' % self.skill) # __init__ 메소드에서 self.skill 변수를 대입하여 할당 print('캐릭터 능력치 : 체력 {0}, 마력 {1}, 힘 {2}'.format(self.cha, self.wiz, self.str)) jake = character('jake',20,'폭격 지원') jake.signal() 결과 캐릭터 명 : jake 캐릭터 레벨 : 20 캐릭터 스킬 : 폭격 지원 캐릭터 능력치 : 체력 10, 마력 20, 힘 21 |
'[Dev] > Python' 카테고리의 다른 글
[Python] Python 3.x Virtualenv(가상환경) 만들기 (0) | 2019.04.09 |
---|---|
[Python] 파일 쓰기 / 읽기 / 추가 (0) | 2017.12.21 |
[Python] 함수 (0) | 2017.12.20 |
[Python] WHILE 반복문 (0) | 2017.12.20 |
[Python] FOR 반복문 (0) | 2017.12.05 |