본문 바로가기
파이썬

파이썬 스태틱메소드 이해하기

by python pro 2023. 1. 26.
반응형

"Python 스태틱메소드"는 클래스 내부에 정의된 메소드로, 클래스 자체와 관련된 작업을 수행하는데 사용됩니다. 스태틱메소드는 인스턴스 생성 없이도 호출이 가능하며, 인자로 클래스나 인스턴스를 받지 않습니다. 일반적으로 상수나 유틸리티 함수와 같은 기능을 구현하는데 사용됩니다.

 

아래는 스태틱메소드를 정의하는 예시입니다.

class MyMath:
    @staticmethod
    def add(x, y):
        return x + y

    @staticmethod
    def multiply(x, y):
        return x * y

print(MyMath.add(3, 4))  # 7
print(MyMath.multiply(3, 4))  # 12

스태틱메소드를 정의할 때는 @staticmethod 데코레이터를 사용합니다. 이 코드는 MyMath 클래스에 add와 multiply 메소드를 정의하며, 이를 이용해 덧셈과 곱셈을 수행합니다.

 

아래는 스태틱메소드를 사용하지 않는 잘못된 코드 예시입니다.

class MyMath:
    def add(x, y):
        return x + y

    def multiply(x, y):
        return x * y
        
print(MyMath.add(3, 4)) # TypeError: add() takes 2 positional arguments but 3 were given
print(MyMath.multiply(3, 4)) # TypeError: multiply() takes 2 positional arguments but 3 were given

위 코드는 스태틱메소드를 사용하지 않은 상태에서 add와 multiply 메소드를 정의하고 호출하는 코드입니다. 하지만 스태틱메소드를 사용하지 않은 상태에서는 add와 multiply 메소드가 self를 첫 번째 인자로 기대하기 때문에 오류가 발생합니다.

 

스태틱메소드를 사용하면 클래스 자체와 관련된 작업을 수행할 수 있으며, 인스턴스 생성 없이도 호출이 가능하므로 상수나 유틸리티 함수와 같은 기능을 구현하는데 이용됩니다.

 

정리하면,

  • 클래스나 인스턴스와 관련없는 기능을 구현할때 사용
  • 인스턴스를 생성할 필요 없이도 호출 가능
  • @staticmethod를 이용해 정의
  • self를 인자로 받지 않는다는 점을 기억

스태틱 메소드는 인스턴스를 생성할 필요 없이 클래스 자체와 관련된 기능을 정의하기 좋아요.

 

아래는 스태틱 메소드를 활용한 실전 예제입니다.

class Logger:
    @staticmethod
    def log(message):
        with open('log.txt', 'a') as f:
            f.write(f'{datetime.now()} - {message}\n')
   
    @staticmethod
    def log_error(error_message):
        with open('error_log.txt', 'a') as f:
            f.write(f'{datetime.now()} - {error_message}\n')

Logger.log('Application started')
try:
    x = 1 / 0
except Exception as e:
    Logger.log_error(e)

위 코드는 Logger 클래스를 정의하며, log와 log_error 메소드를 스태틱메소드로 정의하여 이를 이용해 업무에서 사용되는 기능을 구현합니다. log 메소드는 message를 인자로 받아 log.txt 파일에 기록하는 기능을 구현합니다. log_error 메소드는 error_message를 인자로 받아 error_log.txt 파일에 기록하는 기능을 구현합니다.

 

이 코드를 통해 스태틱메소드를 이용해 클래스 자체와 관련된 기능을 구현하는 실제 업무 예제를 이해할 수 있을 것입니다.

 

 

반응형

댓글