Python) 클래스 멤버와 인스턴스 멤버 이해하기
이번 포스팅에서는 클래스 멤버와 인스턴스 변수에 대해 알아보겠습니다.
1. 클래스 변수
- 단체의 단체명과 같이 클래스로 만들어진 모든 인스턴스가공유하는 데이터를 담는 변수
- 객체에 의해서 변경이 되면 안되는 변수
- 반드시 고정값으로 사용되어야만 하는 데이터는 클래스로 선언해서사용한다.
2. 인스턴스 변수
- 사람의 이름과 같이 각각의 인스턴스마다 가지고 있는 고유한
- 데이터를 담는 변수
- 객체에 의해서 변경이 가능한 데이터의 변수
예제 ) 회사의 사원을 관리하는 클래스 생성
class Employees:
raise_amount = 1.1 #클래스 변수
def __init__(self, first,last,pay):# 객체가 만들어질 때 바로 작동되는 함수
self.first = first
self.last = last
self.pay = pay
self.email = first.lower() + '.' + last.lower() + '@gmail.com'
def full_name(self): #사원의 전체이름을 출력하는 함수
return '{} {}'.format(self.first, self.last)
def apply_raise(self): #월급을 인상하는 변수
self.pay = int(self.pay*self.raise_amount) #인스턴스인 self를 사용하여 엑세스
print('인상된 월급은 {}원 이다' .format(self.pay))
문제1. 예제의 Employees 클래스로 emp1객체를 실체화 시켜 인상된 월급을 print 하시오
emp1 = Employees('seonhye','shin',5000000)
print(emp1.pay) # orginal pay
emp1.apply_raise() # 인상된 pay
>>결과 :
500000
인상된 월급은 5500000원 이다
문제2. 용식사원과 선혜사원이 있을 때, 선혜사원의 인상률을 20%로 올리고 싶다면 ?
emp1 = Employees('seonhye','shin',5000000)
emp2 = Employees('yongsik','kim',5000000)
emp1.raise_amount = 1.2
emp1.apply_raise()
emp2.apply_raise()
>> 결과 :
인상된 월급은 6000000원 이다
인상된 월급은 5500000원 이다