티스토리 뷰

[Dev]/Python

[Python] 클래스

ossians 2017. 12. 22. 12:27

 

[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
Comments
최근에 올라온 글