본문 바로가기
Python/Python FAQ

Python 클래스 (정적) 변수 및 메서드, Class (static) variables and methods

by 베타코드 2023. 5. 7.
반응형

질문


파이썬에서 클래스(static) 변수 또는 메소드를 어떻게 생성하나요?


답변


클래스 정의 내부에 선언된 변수 중 메소드 내부에 선언되지 않은 변수는 클래스 또는 정적 변수입니다:

>>> class MyClass:
...     i = 3
...
>>> MyClass.i
3 

@millerdev가 지적한 대로, 이렇게 하면 클래스 수준의 i 변수가 생성됩니다. 그러나 이는 인스턴스 수준의 i 변수와 구분되므로 다음과 같이 할 수 있습니다.

>>> m = MyClass()
>>> m.i = 4
>>> MyClass.i, m.i
>>> (3, 4)

이는 C++ 및 Java와 다르지만, C#에서는 인스턴스에 대한 참조를 사용하여 정적 멤버에 액세스할 수 없습니다.

Python 튜토리얼에서 클래스 및 클래스 객체에 대해 설명한 내용을 참조하십시오.

@Steve Johnson은 이미 정적 메소드에 대해 답변했으며, Python 라이브러리 참조의 "내장 함수"에서도 설명되어 있습니다.

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...

@beidy는 classmethod를 정적 메소드보다 권장하며, 이 경우 메소드가 첫 번째 인수로 클래스 유형을 받습니다.

반응형

댓글