https://www.pythontutorial.net/python-oop/python-static-methods/
Introduction to Python static methods
- instance method는 바인딩된 개체의 상태에 액세스하고 수정할 수 있다.
- class method는 클래스 상태에 액세스하고 수정할 수 있습니다.
- static method는 개체, 클레스 상태에 액세스하고 수정할 수 없습니다.
실제로 정적 메서드를 사용하여 클래스에서 일부 논리적 관계가 있는 유틸리티 메서드 또는 그룹 함수를 정의합니다.
정의
class className:
@staticmethod
def static_method_name(param_list):
pass
호출 구문
className.static_method_name()
static methods vs class methods
Class Methods | Static Methods |
Python은 cls인수를 클래스 메서드에 암묵적으로 전달합니다. | cls, self 인수를 암묵적으로 전달하지 않는다. |
Class method는 클래스 상태에 액세스하고 수정할 수 있습니다 . | Class method는 클래스 상태에 액세스하고 수정할 수 없다. |
정의시 @classmethod decorator사용 | 정의시 @staticmethod decorator 사용 |
TemperatureConverter다음은 섭씨, 화씨 및 켈빈 사이의 온도를 변환하기 위한 정적 메서드가 있는 클래스를 정의합니다 .
class TemperatureConverter:
KEVIN = 'K',
FAHRENHEIT = 'F'
CELSIUS = 'C'
@staticmethod
def celsius_to_fahrenheit(c):
return 9*c/5 + 32
@staticmethod
def fahrenheit_to_celsius(f):
return 5*(f-32)/9
@staticmethod
def celsius_to_kelvin(c):
return c + 273.15
@staticmethod
def kelvin_to_celsius(k):
return k - 273.15
@staticmethod
def fahrenheit_to_kelvin(f):
return 5*(f+459.67)/9
@staticmethod
def kelvin_to_fahrenheit(k):
return 9*k/5 - 459.67
@staticmethod
def format(value, unit):
symbol = ''
if unit == TemperatureConverter.FAHRENHEIT:
symbol = '°F'
elif unit == TemperatureConverter.CELSIUS:
symbol = '°C'
elif unit == TemperatureConverter.KEVIN:
symbol = '°K'
return f'{value}{symbol}'
f = TemperatureConverter.celsius_to_fahrenheit(35)
print(TemperatureConverter.format(f, TemperatureConverter.FAHRENHEIT)) # 95.0°F
Summary
- static 메서드를 사용하여 유틸리티 메서드를 정의하거나 논리적으로 관련된 함수를 클래스로 그룹화합니다.
- 정의를 위해 @staticmethod decorator 사용
'Python Object-oriented Programming' 카테고리의 다른 글
type Class (0) | 2023.04.01 |
---|---|
Abstract Class (0) | 2023.03.31 |
super() Method (0) | 2023.03.31 |
__new__() Method (0) | 2023.03.31 |
[ OOP ] Index (0) | 2023.03.31 |
댓글