코드잇 스프린트/파이썬

정적 메소드

JOHAWK 2024. 7. 25. 23:41

파이썬에서 클래스, 인스턴스에 이어 정적 메소드에 대해 알아보겠습니다.

정적 메소드

목차

1. 정적 메소드란?

2. 정적 메소드 호출 방법

 

1. 정적 메소드란?

일반적으로 클래스의 메소드를 사용하기 위해서는 인스턴스를 통해 호출해야한다. 하지만 인스턴스를 통하지 않고 클래스의 메소드를 바로 사용할 수 있는 방법이 있다. 바로 정적 메소드를 활용하는 것이다.

정적 메소드는 다른 메소드(클래스 메소드, 인스턴스 메소드)와 달리 첫번째 매개변수로 self를 사용하지 않는다. 그렇기 때문에 정적 메소드 안에서 인스턴스나 클래스의 속성(self.OOO)에 접근하거나 인스턴스/클래스 메소드를 호출하는 것이 불가능하다.

정적 메소드는 인스턴스의 상태를 변화시키지 않는 메소드를 만들 때 사용된다.


2. 정적 메소드 호출 방법

정적 메소드는 메소드 위에 @staticmethod를 적어주면 된다. 그리고 매개변수에 self를 지정하지 않는다.

class 클래스이름:
    @staticmethod
    def 메서드(매개변수1, 매개변수2):  # self를 사용하지 않는다.
        코드

 

정적 메소드를 사용한 예시로 사칙연산을 하는 계산기 클래스를 만들었다.

class Calc:
    @staticmethod
    def plus(a, b):
        print(a + b)
 
     @staticmethod
    def minus(a, b):
        print(a - b)

    @staticmethod
    def div(a, b):
        print(a / b)

    @staticmethod
    def mul(a, b):
        print(a * b)

Calc.plus(200,10)  # 클래스에서 메소드를 바로 호출(클래스 메소드)
Calc.minus(200,10)
Calc.div(200,10)
Calc.mul(200,10)
# Calc class 적용 결과
210
190
20
2000

예시처럼 정적메소드를 사용하면 인스턴스를 통해 메소드를 사용하는 것이 아니라 클래스에서 바로 메소드를 호출할 수 있다. 그렇기 때문에 정적메소드는 인스턴스를 쓸 일이 없을 때 사용하기 적합하다.


 

 

참고

[파이썬] 정적(static) 메서드와 클래스(class) 메서드 | Engineering Blog by Dale Seo

 

[파이썬] 정적(static) 메서드와 클래스(class) 메서드

Engineering Blog by Dale Seo

www.daleseo.com

파이썬 코딩 도장: 35.2 정적 메서드 사용하기 (dojang.io)

 

파이썬 코딩 도장: 35.2 정적 메서드 사용하기

지금까지 클래스의 메서드를 사용할 때 인스턴스를 통해서 호출했습니다. 이번에는 인스턴스를 통하지 않고 클래스에서 바로 호출할 수 있는 정적 메서드와 클래스 메서드에 대해 알아보겠습

dojang.io

클래스와 인스턴스 (tistory.com)

 

클래스와 인스턴스

객체 지향 프로그래밍(Object-Oriented Programming, OOP)에서 사용되는 클래스와 인스턴스에 대해 알아보겠습니다. 클래스와 인스턴스 목차 1. 객체 지향 프로그래밍 2. 클래스 1) 클래스란? 2) 어떻게 사

johawk.tistory.com