Programming

; develop a program

Back-End/Python

[Python] 클래스(class) 메소드와 정적(static) 메소드

Clloud_ 2022. 9. 29. 12:14
반응형

이번 포스팅에서는 파이썬의 클래스(class) 메소드와 정적(static) 메소드에 대하여 공부를 해보고자 한다.

 


클래스(class) 메소드

클래스 메소드는 객체가 아닌 클래스 자체의 메소드를 말한다.

객체별로 생성되는 것이 아니라 한 클래스에 속하게 된다.

클래스 변수와 관련된 기능을 제공하는 메소드를 만들 때 사용한다.

 

클래스 메소드 구현

메소드 선언부에 @classmethod 데코레이터를 붙인다.

반드시 한 개 이상의 매개변수를 선언해야 한다.

 

클래스 변수

클래스 변수는 객체가 아닌 클래스 자체의 변수를 말한다.

클래스 블록에 선언한다.

 

클래스 변수 호출

Class이름. 변수명 

 

클래스 메서드와 변수는 클래스 이름과 객체를 이용하여 호출할 수 있다.

 

예제

순서 1. 클래스를 정의한다.

순서 2. 클래스 변수를 선언한다.

순서 3. 클래스 메소드를 구현한다.

class Circle:
    PI = 3.14159
    
    @classmethod
    def calc_width(clz, radius: "반지름"):
        return radius * radius * clz.PI

클래스 메소드 및 변수를 호출한다.

print(Circle.PI)

Circle.PI = 10000.23433
print(Circle.PI)

result = Circle.calc_width(10)
print(result)

[실행결과]

3.14159
10000.23433
314.159

 


정적(static) 메소드

정적 메소드는 클래스에 선언된 메소드로 객체와 상관없이 클래스의 기능을 제공한다

객체와 상관없는 클래스 만의 기능을 제공하는 메소드를 만들 때 사용한다.

 

정적 메소드 구현

메소드 선언부에 @staticmethod 데코레이터를 붙인다.

 

예제

순서 1. 클래스를 정의한다.

순서 2. 정적 메소드를 구현한다.

class Calculator:

    @staticmethod
    def plus(num1, num2):
        return num1 + num2

정적 메소드를 호출한다.

 

 

Calculator.plus(10,20)

[실행결과]

30

 

클래스 메소드와 정적 메소드는 Class이름.변수명으로 변수를 선언하는 점에서 동일하지만,
클래스 메소드는 첫 번째 매개변수로 클래스 자신을 받는 변수를 선언해 다른 클래스 멤버들을 호출할 수 있고,
정적 메소드는 클래스 변수에 직접 접근하지 못하여 변수를 호출할 수 없다는 차이점이 있다.

 


반응형