본문 바로가기
Python Object-oriented Programming

Static Methods

by 자동매매 2023. 3. 31.

https://www.pythontutorial.net/python-oop/python-static-methods/

 

Python Static Methods Explained Clearly By Practical Examples

In this tutorial, you'll learn about Python static methods and how to use define utility methods for a class.

www.pythontutorial.net

 

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

댓글