Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

동산로의 블로그

staticmethod, classmethod 본문

카테고리 없음

staticmethod, classmethod

동산로 2025. 4. 17. 12:19

정적 메소드와 클래스 메소드.

정적 메소드

정적 메소드는 python class 안에서 정의됩니다. 다만 일반적인 메소드들과 달리

self, 혹은 cls를 첫번째 인자로 가지지 않습니다. 인스턴스에 대한 어떠한 접근도 불가능합니다. 클래스와 무관한 일반적인 함수처럼 행동합니다.

class MathTool:
    @staticmethod
    def add(a,b):
        return a+b

print(MathTool.add(3,4)) # 7

클래스 메소드

클래스 메소드는 cls(클래스 자기자신)을 첫번째 인자로 가집니다. 인트턴스의 정의 없이 사용이 가능합니다. 또한 클래스에서 선언된 변수를 접근 가능하고 새로운 인스턴스 생성이 가능합니다.
인스턴스와 무관한 클래스 변수에 대한 접근이 가능하기 때문에 다음과 같이 총 인스턴스의 생성된 숫자를 표시할 수 있습니다.

class classname:
    count = 0 #class attribute
    def __init__(self):
        classname.count +=1
    @classmethod
    def print_num(cls):
        print(str(cls.count))
    @classmethod
    def create_instance(cls):
        ins = cls()
        return ins

polymorphic behavior이 있어서 상속 받은 클래스에서 사용할 시에는 해당 클래스의 attribute에 접근이 가능합니다.

class A:
    val = 1

    @classmethod
    def show(cls):
        print(f"{cls.__name__}: {cls.val}")

class B(A):
    val = 2

B.show()