파이썬에서의 정적 클래스 멤버


파이썬 클래스 안에 정적인 멤버 변수나 함수를 만들 수 있나요? 어떤 문법을 이용해야하나요?

  • 2016년 08월 01일에 작성됨

조회수 89


1 답변


좋아요
0
싫어요
채택취소하기

함수 내부가 아닌 클래스 내부에 선언된 변수는 클래스나 정적 변수입니다 :

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

위 코드는 클래스 레벨의 변수 "i"를 생성해주지만 인스턴스 레벨의 "i"와는 전혀 다른 변수입니다. 따라서 아래와 같은 결과를 볼 수 있죠.

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

이는 C++이나 Java와는 다소 다르지만, 인스턴스를 참조하여 정적 멤버에 접근할 수 없는 C#과는 유사한 모습을 보이고 있습니다.

클래스와 class 객체에 대해 다루고 있는 파이썬 튜토리얼의 설명을 한번 참고해보세요.

또한 파이썬 라이브러리 레퍼런스의 "Built-in Functions"의 내용을 보시면 정적 함수를 만드는 방법이 나와있습니다.

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

클래스의 타입을 첫번째 매개변수로 받아들인다는 점에서 staticmethod보다는 classmethod를 추천하는 사람들도 있는데, 저는 그것이 staticmethod를 이용하는 방법에 비해 어떤 이점을 더 주는지 잘 모르겠네요. 저처럼 큰 이점을 느끼지 못하신다면 그냥 staticmethod를 이용하시면 될 듯 합니다.

  • 2016년 08월 02일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close