1 답변
-
함수 내부가 아닌 클래스 내부에 선언된 변수는 클래스나 정적 변수입니다 :
>>> 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를 이용하시면 될 듯 합니다.
댓글 입력