2 minute read

클래스 정의의 형태는 아래와 같습니다. 클래스 뒤에 이름을 적고 콜론(:)으로 구분지어 줍니다. 다음 줄 부터는 들여쓰기를 하고, 필요한 statement를 적어주면 됩니다.

class ClassName:
    <statement-1>
    .
    .
    .
    <statement-N>

클래스안에 멤버변수, 메소드를 추가할 수 있습니다.

먼저 클래스 변수를 하나 다뤄보도록하겠습니다. Test class 안에 변수 i를 하나 선언해보겠습니다. 이렇게 클래스안에 있는 변수를 멤버 변수라고 해요.

class Test:
        i = 0
class_test = Test() #class_test 객체 생성
class_test.i # 멤버변수 i에 접근
0
class_test.i = 3 # 멤버변수 i 수정
class_test.i
3

파이썬에서는 아래와 같이 init 함수를 통해서 클래스 멤버변수 값을 초기화 하여 생성하는 것이 가능합니다.

init 함수의 첫번째 자리에는 self가 오고, 그 다음으로 매개변수를 적어줍니다.

person이라는 클래스를 만들고 전달값에 age와 name을 매개변수로 전달해보겠습니다.

이렇게 동작을 하면 “self.멤버변수이름” 을 통해서 멤버변수를 정의하는 것 입니다. 정의된 변수는 클래스 안에서 사용이 가능합니다.

class ClassName:
    def __init__(self, 매개변수1, 매개변수2, ...):
        <statement-1>
        .
        .
        .
        <statement-N>
class person:
    def __init__(self,age,name):
        # self. 을 통해서 클래스 멤버변수 선언
        self.age = age
        self.name = name
        print("이 사람의 나이는 " + str(self.age) + "입니다.")
        print("이 사람의 이름은 " + self.name + "입니다.")
        
Me = person(10,"SHIN")
이 사람의 나이는 10입니다.
이 사람의 이름은 SHIN입니다.
p1 = person(11,"JIN")
p2 = person(12,"SIM")
이 사람의 나이는 11입니다.
이 사람의 이름은 JIN입니다.
이 사람의 나이는 12입니다.
이 사람의 이름은 SIM입니다.

클래스 안에서 실행되는 함수를 메서드라고 하는데요, init 메서드 이외에도 다양한 메서드를 추가하여 사용할 수 있습니다.

사람이 하는 행동 중 “식사” 라는 메서드(클래스 함수)를 만들어 볼게요. 식사를 하면 포만감이 증가한다고 가정해보겠습니다.

그러면 먼저 포만감에 해당하는 멤버변수도 하나 추가해보겠습니다. 매개변수로 전달 할 때 포만감=0 이라고 해줄건데요, 이 의미는 포만감에 대한 값이 넘어오지 않으면 해당 값을 0으로 초기화 한다는 말 입니다.

class person:
    def __init__(self,age,name,포만감=0):
        self.age = age
        self.name = name
        self.포만감 = 포만감
        print("이 사람의 나이는 " + str(self.age) + "입니다.")
        print("이 사람의 이름은 " + self.name + "입니다.")
        print("현재 포만감은 " + str(self.포만감) + "입니다.")
    def 식사(self):
        pass #추후 작성
        
Me = person(10,"SHIN",50) # 포만감은 50
이 사람의 나이는 10입니다.
이 사람의 이름은 SHIN입니다.
현재 포만감은 50입니다.
Me2 = person(10,"SHIN") # 포만감에 대한 값을 넘기지 않으면 0이 출력됨
이 사람의 나이는 10입니다.
이 사람의 이름은 SHIN입니다.
현재 포만감은 0입니다.

다음으로 식사에 대한 클래스 함수를 작성할건데요, 해당 메서드가 실행되면 포만감 이라는 멤버변수의 값을 +10 하도록 하겠습니다.

모든 메서드의 괄호안에 첫번째에는 self를 입력합니다.

class person:
    def __init__(self,age,name,포만감=0):
        self.age = age
        self.name = name
        self.포만감 = 포만감
        print("이 사람의 나이는 " + str(self.age) + "입니다.")
        print("이 사람의 이름은 " + self.name + "입니다.")
        print("현재 포만감은 " + str(self.포만감) + "입니다.")
    def 식사(self):
        self.포만감 += 10
        print("현재 포만감은 {0} 입니다".format(self.포만감))
Me = person(10,"SHIN",50) # 포만감은 50
이 사람의 나이는 10입니다.
이 사람의 이름은 SHIN입니다.
현재 포만감은 50입니다.
Me.식사()
현재 포만감은 60 입니다

Updated: