반응형
이번 포스팅에서는 파이썬의 클래스(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이름.변수명으로 변수를 선언하는 점에서 동일하지만,
클래스 메소드는 첫 번째 매개변수로 클래스 자신을 받는 변수를 선언해 다른 클래스 멤버들을 호출할 수 있고,
정적 메소드는 클래스 변수에 직접 접근하지 못하여 변수를 호출할 수 없다는 차이점이 있다.
반응형
'Back-End > Python' 카테고리의 다른 글
[Python] 예외(Exception)와 예외 처리(Exception Handling) (2) | 2022.09.30 |
---|---|
[Python] 모듈(Module)과 패키지(Package) (2) | 2022.09.29 |
[Python] 주요 특수 메소드 – 비교 연산자 관련 표현 (2) | 2022.09.28 |
[Python] 주요 특수 메소드 – 문자열 표현 (0) | 2022.09.28 |
[Python] 주요 특수 메소드 – 객체 생성/소멸 (0) | 2022.09.28 |