지난 포스팅에서는 메서드 오버라이딩 개념에 대해 이해하고 예제를 통해 알아보았습니다.
이번 포스팅에서는 파이썬 클래스 중 클래스 변수에 대해 공부해 보려 합니다.
- 46. 파이썬 – 메서드 오버라이딩
- 45. 파이썬 – 클래스의 상속
- 44. 파이썬 – 곱하기.빼기.나누기 기능 만들기와 생성자(Constructor)
- 워드프레스에서 포토샵.플러그인 없이 포토스케이프(3.7)로 워터마크 만들기
- VMware 공유폴더 설정(VMware tools) v16.1
파이썬 클래스
클래스 변수
이전까지 공부한 내용에서 객체 변수는 다른 객체들의 영향을 받지 않고 각각 독립적으로 각자의 값을 유지를 하고 있다는 것을 알게 되었습니다.
이제 객체 변수와는 그 성격이 다른 클래스 변수에 대해 공부해 보겠습니다.
클래스 변수 만들기
>>> class MyFamily:
... lastname = "이"
...
MyFamily 라는 클래스를 선언을 했고 그 안에 lastname 이라는 변수가 바로 클래스 변수 입니다.
클래스 변수는 클래스 안에서 함수를 선언하는 것 처럼 클래스 안에 변수를 선언하고 생성을 하게 됩니다.
>>> print(MyFamily.lastname)
이
>>>
위 코드처럼 클래스 변수를 print 문을 통해 출력을 해보았습니다.
위 예제에 있는 것 처럼 클래스 변수는 클래스이름.클래스 변수 로 사용하시면 됩니다.
>>> a = MyFamily()
>>> b = MyFamily()
>>> print(a.lastname)
이
>>> print(b.lastname)
이
>>>
클래스 변수의 내용 변경하기
또한 위 코드처럼 MyFamily 클래스로 만든 객체를 통해서도 클래스 변수를 사용할 수 있습니다.
그럼 만약에 MyFamily 클래스의 lastname 이라는 클래스 변수의 내용을 다른 문자열로 바꾸면 어떻게 될까요?
아래는 클래스 변수의 내용을 “박” 이라는 문자열로 바꿔본 내용입니다.
>>> MyFamily.lastname = "박"
>>> print(a.lastname)
박
>>> print(b.lastname)
박
>>>
클래수 변수의 내용을 변경 했습니다.
결과는 클래스로 만든 객체의 lastname 값도 모두 변경되었음을 확인 할 수 있습니다.
이처럼 클래스 변수는 클래스로 만든 모든 객체에 공유된다는 특성을 가지고 있습니다.
클래스 변수와 같은 이름의 객체 변수를 생성한다면 어떻게 될까?
만약 클래스 변수와 같은 이름의 객체 변수를 생성하면 어떻게 될까요?
아래 코드처럼 이전 사용했던 a.lastname 을 변경해 보겠습니다.
>>> a.lastname = "오"
print(a.lastname)
오
>>>
얼핏 보면 MyFamily 클래스의 lastname 클래스 변수가 바뀐것 같아 보이지만
a 객체에 lastname 이라는 객체 변수가 새롭게 생성된 것입니다.
이말은 객체 변수는 클래스 변수와 같은 이름으로 생성을 해도 된다는 것입니다.
a.lastname 이라는 객체 변수를 생성을 해도 MyFamily 클래스의 lastname 과는 상관이 없습니다.
아래 코드를 보시면 확인이 되실겁니다.
>>> print(MyFamily.lastname)
박
>>> print(b.lastname)
박
>>>
이처럼 MyFamily 클래스의 lastname 값은 변하지 않았습니다.
클래스 변수와 객체 변수
클래스 변수보다는 객체 변수가 훨씬 더 중요합니다.
실제 프로그래밍을 할 때도 클래스 변수 보다는 객체 변수를 주로 사용을 하고 있습니다.
이렇게 이번 포스팅에서는 클래스 변수에 대해 공부해 보았습니다.
여기까지 클래스에 대한 공부를 마무리 하고 다음 포스팅에서는 모듈에 대해 공부를 해보도록 하겠습니다.
- 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
