나의 공부 일기

Python) 함수 / 메서드 본문

파이썬/파이썬 정리

Python) 함수 / 메서드

곽병권 2023. 10. 19. 15:56
728x90

이번에는 함수와 메서드에 대해 정리해보겠습니다.

 

함수는 저번에 정리했던 일반함수와 클래스내에서 사용되는 메서드로 나뉩니다.

더 정확히는 클래스의 멤버 변수를 이용해서 구현된 함수를 메서드라고 부릅니다.

 

메서드는 크게 3가지로 나뉩니다.

인스턴스 메서드, 클래스 메서드, 스태틱 메서드 입니다.

 

먼저 인스턴스 메서드란 객체 생성 후 객체 참조를 통해 호출 가능한 메서드를 말합니다.

self변수를 통하여 메서드 호출 객체를 구분하여 객체 변수를 활용합니다.

 

다음 클래스 메서드 (@classmethod) 는 클래스 이름을 통하여 호출 가능한 메서드입니다.(객체 변수는 활용 불가능합니다.)

cls를 통하여 호출시 클래스 정보를 전달하여 클래스 변수를 활용할 수 있습니다. 

 

마지막은 스태틱 메서드(@staticmethod)는 클래스에 속해있으나 self가 없는 메서드를 말합니다.

일반 함수를 클래스 멤버인 것처럼 활용하기 위한 용도로 쓰입니다.

 

기본 사용법 입니다.

class exam:
    dept = ''

    def setinfo(self, name, age):
        self.name = name
        self.age = age

    def printinfo(self):
        print(self)
        print(exam.dept, self.name, self.age)

    @classmethod
    def deptPrint(cls):
        print(cls.dept)

    @staticmethod
    def examinit(ex):
        ex.dept = 0
        ex.name = ''
        ex.age = 0

클래스메서드와 스태틱메서드는 이처럼 @로 선언을 해줘야됩니다.

 

클래스 밖에서 dept가 무엇인지 exam.dept = '' 로 입력해줄 수 있습니다.

그러면 그 값도 클래스안에 추가되어

staticmethod인 examinit이 적용되어 클래스메소드인 deptPrint를 했을때 dept에 입력된 값이 출력되게 됩니다.

 

인스턴스 메서드란

self변수를 통해 클래스 내에 있는 메서드를 self.메서드명() 이렇게 호출 할 수 있는것을 말합니다.

 

하나의 메서드를 만들었는데 그 다음 메서드에서 그 전에 만들었던 메서드가 필요한경우 사용합니다.

 

 


여기까지 스태틱메서드 , 인스턴스메서드, 클래스메서드에 대해 정리해보았습니다.

728x90