Python으로 익히는 딥러닝

Python) 클래스 멤버와 인스턴스 멤버 이해하기

서_네 2018. 11. 27. 19:23

이번 포스팅에서는 클래스 멤버와 인스턴스 변수에 대해 알아보겠습니다.


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원 이다