@staticmethod

#staticmethod
class hello:
    num = 10

    @staticmethod
    def calc(x):
        return x + 10

print(hello.calc(10))
#결과
20

# 정적메소드를 써주지 않으면,
# hello().calc(10) 처럼 hello() 인스턴스를 생성해 줘야 한다.
# 보통 정적 메서드는 인스턴스 속성, 인스턴스 메서드가 필요 없을 떄 사용함.

@classmethod

#classmethod
class hello:
    num = 10

    @classmethod
    def calc(cls, x):
        return x + 10 + cls.num

print(hello.calc(10))
#결과
30

2. @classmethod와 @staticmethod 의 차이

https://wikidocs.net/16074

class Language:
    default_language = "English"

    def __init__(self):
        self.show = '나의 언어는' + self.default_language

    @classmethod
    def class_my_language(cls):
        return cls()

    @staticmethod
    def static_my_language():
        return Language()

    def print_language(self):
        print(self.show)

class KoreanLanguage(Language):
    default_language = "한국어"
>>> from language import *
>>> a = KoreanLanguage.static_my_language()
>>> b = KoreanLanguage.class_my_language()
>>> a.print_language()
나의 언어는 English
>>> b.print_language()
나의 언어는 한국어