- 클래스 변수
- 인스턴스 변수
- 인스턴스 메소드
- 클래스 메소드
- 스태틱 메소드
위의 개념들은 쓸 때마다 혼동됩니다. 어디다 적어놓지 않으면 나중에 또 까먹을 게 뻔합니다.
그러니 클래스 메소드를 한 번 알아봅시다.
class A:
var = 1
위와 같이 클래스를 정의했다고 해봅시다. 여기서 var
은 클래스 변수입니다.
인스턴스들의 클래스 변수들도 클래스 변수의 값과 같은 것은 굳이 안 봐도 알 수 있습니다.
>>> a = A()
>>> b = A()
>>> A.var
1
>>> a.var
1
여기서 클래스의 클래스 변수를 수정해봅시다.
>>> A.var = 2
>>> b.var
2
>>> a.var
2
클래스 변수를 수정하면 해당 클래스의 인스턴스들에 모두 적용됩니다. 하지만 인스턴스의 클래스 변수를 수정하면
>>> a.var = 3
>>> b.var
2
>>> A.var
2
해당 인스턴스의 클래스 변수만 수정됩니다.
클래스 변수를 이용해 클래스를 네임스페이스(namespace)로 사용할 수 있습니다.
클래스 메소드(Class Method) - 레퍼런스 : SchoolofWeb
일반적인 인스턴스 메소드는 첫 번째 인자로 인스턴스 자신이 자동적으로 들어가게 되며, 이 인자의 이름은 관례로 self
라고 한다고 합니다. 그리고 클래스 메소드는 @classmethod
데코레이터로 생성 가능하며, 첫 번째 인자로 인스턴스의 클래스가 들어가게 됩니다. 이를 관례로 cls
라고 합니다. 간단하게 클래스 메소드로 클래스 변수를 수정해봅시다.
>>> class A:
... var = 1
... @classmethod
... def mod(cls, k):
... cls.var = k
>>> a = A()
>>> b = A()
>>> b.mod(3)
>>> a.var
3
>>> b.var
3
>>> A.var
3
클래스 메소드에서 클래스의 클래스 변수를 수정해서, 다른 인스턴스와 클래스의 클래스 변수를 수정할 수 있습니다.
'파이썬 > 문법' 카테고리의 다른 글
Python | for..else 문법으로 이중 for loop을 continue하기 (0) | 2022.12.29 |
---|