카테고리 없음

클래스란? (1)

  • -

사실 클래스는 파이썬에서 정말 많은 역할을 담당하고 있기도 하지만, 무엇보다도 증권사에서 배포하는 Open API를 이용하기 위해서는 클래스를 반드시 알아야 한다. 하지만 그만큼 양도 방대하기 때문에 사실 작성을 시작하는 것이 두려웠다.

하지만 한 번 알고 있으면 무궁무진하게 사용할 수 있는 것이기 때문에,  이 기회를 통해 꼭! 꼭! 꼼꼼하게! 이해하고 넘어갔으면 하는 마음에 작성한다.

 

그래서 클래스가 뭔데?

클래스란 말 그대로 class의 의미인 교실에 비유해보도록 하자.(대학생이라면 강의실을 생각해도 좋음) 어느 수업이나 다를 것 없이 수업을 시작하기 전에는 출석체크를 반드시 한다. 그렇다면 그 출석체크 명단 안에는 어떤 정보들이 들어있을까?

고등학교는 어떤진 모르겠지만 대학교의 경우에는 학생의 사진, 이름, 학과, 학번은 필수로 포함되어 있다. 다시 말해, 여러 사람의 여러 정보들이 모여 데이터를 이루고 있다는 것이다.

이름 학과 학번 이메일 주소
김가나 경제학과 1231 1231@경제.com
김다라 세무학과 1232 1232@세무.com
김마바 행정학과 1233 1233@행정.com
김사아 건축학과 1234 1234@건축.com
김자차 사회복지학과 1235 1235@사회.com
김카타 전기전자공학과 1236 1236@전기.com
김파하 교통공학과 1237 1237@교통.com

이러한 데이터들을 특정한 형태로 나타낼 수 있도록 하는 것이 바로 클래스이다. 도대체 무슨 말인지 모르겠어도 걱정하지 말고, 직접 써보자. 직접 써보면 이해가 간다. 적자생존! 적어야 산다!

 

클래스 만들기

class list:
    pass

 

함수를 만들 때는 definition의 약자인 def를 사용했던 것처럼, 클래스를 만들 때는 class를 사용한다. 그리고, class 뒤에는 클래스의 이름을 적어준 뒤 ':'를 사용해주고, 일단 내용은 비워두기 위해 pass를 넣어두자. 이렇게 했다면 list라는 클래스의 생성은 완료된 것이다.

그렇다면 이제 클래스 내부에 학생의 이름, 학과, 전화번호, 이메일을 변수로 정의해보자.

class list:
    def callname(self, name, major, number, email):
        self.name = name
        self.major = major
        self.number = number
        self.email = email

이렇게 작성했다면 클래스는 모두 정의한 것이다.

위 코드 내의 함수를 보면, 앞 글(모듈 만들기)에서 사용했던 것과는 다소 다른 부분이 있음을 알 수 있다. name, major, number, email 등은 단순하게 변수를 나열한 것이기 때문에 어렵지 않지만, self는 처음 본다. 하지만 self는 이해하기가 정말 어려우니 별도로 다루도록 하고, 여기서는 이 점만 기억하고 넘어가도록 하자. "클래스 내 함수의 경우, 맨 첫 번째 변수(인자)는 무조건 self여야 한다."

 

클래스 사용하기

class list:
    def callname(self, name, major, number, email):
        self.name = name
        self.major = major
        self.number = number
        self.email = email


student1 = list()
student1.callname("김가나", "경제학과", "1231", "1231@경제.com")

이제 코드에 아래의 두 줄을 추가해주도록 하자.

클래스를 사용하기 위해서는 아래의 두 단계만 기억하면 된다.
1. 변수명 = 클래스명()
2. 변수명.클래스내 함수명(변수 입력)

그렇다면 이제 해당 코드 내에서 [변수명.변수]의 형태를 프린트하면, 입력한 값이 나오는 것을 확인할 수 있다.

 

뭔가 좀 허전하다. 적어도 출석 명부이니만큼 이름:김가나, 학과:경제학과 와 같은 형태로 나오는 편이 깔끔할 것 같으니 코드를 수정해주도록 하자.

class list:
    def callname(self, name, major, number, email):
        self.name = name
        self.major = major
        self.number = number
        self.email = email
    def printcall(self):
        print("이름 : ", self.name)
        print("학과 : ", self.major)
        print("학번 : ", self.number)
        print("이메일 : ", self.email)


student1 = list()
student1.callname("김가나", "경제학과", "1231", "1231@경제.com")
student1.printcall()

 

list 클래스 내에 앞에서 정의했던 callname 함수 외에 printcall 함수를 추가로 작성했다. callname에서 입력된 self.name이라는 변수가 있으므로 printcall에서도 self.name 변수를 출력하도록 했다.

위 코드를 실행해보자.

앞전의 결과보다 깔끔한 결과물을 내놓았다.

 


728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.