본문 바로가기
programming/Python

파이썬 클래스 함수 사용 방법 python class method

by 개코 - 개발과 코딩 2021. 11. 6.

파이썬 클래스에 함수를 추가하면 데이터를 독립적으로 가공할 수 있다. 무분별하게 변수를 만들고 가공을 하는 것보다 데이터 구조체를 생성할 수 있는 클래스를 만들어 놓으면 규칙적인 데이터의 조합과 가공이 용이하다. 이런 독립적인 클래스를 여러 개 만들고 배열이나 컬렉션을 이용하면 대량의 데이터를 처리하기에 용이하다.

파이썬 클래스 함수 사용
python class method

파이썬 클래스에서는 메서드를 만들어 사용할 수 있다.

모든 OOP 같은 객체지향 프로그래밍 언어들이 그렇듯 파이썬도 마찬가지이다.

클래스에 메서드를 추가할 수 있다는 것은 객체화된 클래스에서 어떤 동작을 할 수 있고 특정한 작업을 수행할 수 있다는 것을 의미한다.

즉, 추가적인 코딩작업을 클래스내에서 수행하여 반복적인 코딩작업을 줄이는 것이 목적일 수 있다.

클래스 구성 요소

클래스 구성에 대해 다시 언급을 해 보자.

클래스는 데이터 구조체 라고 이해하는 것이 아마 빠를 것이다.

클래스 내에는 변수가 있고, 메서드가 있으며 초기화를 통해 변수들에 초기값을 설정할 수 있다.

클래스를 사용하려면 객체화 하여 메모리에 올려야 한다.

파이썬 클래스가 생성될 때 init 함수를 사용하여 초기값들을 설정할 수 있다.

유식하게 클래스의 구성은 아래와 같다.

  • 생성자
  • 변수 : 프로퍼티
  • 메서드 : 함수

위의 내용을 토대로 클래스를 사람과 비유를 해 보자.

  • 클래스 생성자는 사람의 탄생 등을 표현할 수 있다.
  • 클래스 변수는 사람의 성격 등의 특징을 표현할 수 있다.
  • 클래스 메서드는 사람의 동작 등의 행동을 표현할 수 있다.

이야기처럼 작성을 해보자.

  • 사람이 태어난다. : 클래스가 생성된다.
  • 사람의 특징이 나타난다 : 클래스 변수에 값이 설정된다.
  • 사람이 움직인다. : 클래스 메서드가 호출되고 결과값을 반환한다.

클래스 함수 만들기

파이썬에서 클래스 함수를 만드는 것은 어렵지 않다.

클래스 내에 클래스를 선언하고 어떤 동작을 할 것인지 코딩을 해 주면 된다.

아래는 클래스를 만든 하나의 형식이다.

클래스를 만들고 생성자를 작성한다.

생성자에는 클래스변수를 선언하고 값을 넣어준다.

물론, 생성자는 옵션이다.

사용할 일이 없다면 작성하지 않아도 된다.

생성자를 통해 만들어지고 설정된 값을 클래스 메서드를 이용해 값을 출력해 준다.

#- 클래스부분
class pythonClass : #-{

    def __init__(self, val1, val2, val3) : #-{
        self.property1 = val1
        self.property2 = val2
        self.property3 = val3
    #-}

    def pythonDoFunction(self) : #-{

        print("---- 아이돌 정보 ----")
        print("프로퍼티1", type(self.property1), self.property1)
        print("프로퍼티2", type(self.property2), self.property2)
        print("프로퍼티3", type(self.property3), self.property3)

    #-}

#-}

코드샘플

위의 클래스를 바탕으로 사람의 성격을 표현해 보도록 한다.

사람의 성격은 다양하다.

클래스를 설명하기에 부족함이 없다.

클래스를 사람에 비유하여 작성하기에는 mbti 가 제격이다.

만약, 이 글을 본 사람이라면 파이썬으로 앱을 만들 수도 있을 것이다.

약간의 조미료까지 첨가해 본다.

코드가 길어보이지만 꼭 그렇지도 않다.

클래스 부분을 살펴보고, 어떻게 사용되는지만 확인하면 된다.

print('----------')

#- 클래스부분
class ClsMbtiTest : #-{

    def __init__(self, name, mbti, avengers) : #-{
        self.name = name
        self.mbti = mbti
        self.avengers = avengers
    #-}

    def fnIdolInfo(self) : #-{

        print("---- MBTI 정보 ----")
        print("검사자 이름", type(self.name), self.name)
        print("MBTI 결과", type(self.mbti), self.mbti)
        print("비슷한 어벤져스", type(self.avengers), self.avengers)

    #-}

#-}

idol1 = ClsMbtiTest("크리스 에반스", "ISFJ", "캡틴 아메리카");
idol1.fnIdolInfo()

print('----------')

idol2 = ClsMbtiTest("스칼렛 요한슨", "ISTP", "블랙 위도우");
idol2.fnIdolInfo()

print('----------')

idol3 = ClsMbtiTest("크리스 햄스워스", "ESTJ", "토르");
idol3.fnIdolInfo()

print('----------')

idol4 = ClsMbtiTest("로버트 다우니 주니어", "ENTP", "아이언맨");
idol4.fnIdolInfo()

print('----------')

결과화면을 보자.

클래스는 하나지만 객체화되면서 독립적으로 사용할 수 있도록 여러 개의 데이터를 만들어 낸다.

클래스 또한 객체이고 리스트에 연속적으로 추가될 수도 있다.

반응형

댓글