나의 공부 일기

Python) getter/setter 본문

파이썬/파이썬 정리

Python) getter/setter

곽병권 2023. 10. 23. 11:34
728x90

은닉된 속성에 대한 인터페이스로 getter와 setter가 있습니다.

게터 세터 라고 부릅니다.

 

세터(setter)는 개체에 속성을 설정하는 역할의 메서드 입니다.

반대로 게터(getter)는 개체의 속성을 반환하는 역할의 메서드 입니다.

 

세터에다가 이 개체가 어떻게 이루어져 있는지 설정해놓고 게터로 반환하는 형식으로 이루어져 있습니다.

class exam:
    def __init__(self, x, y):
        self.__x = x
        self.__y = y

    def setX(self, x):
        self.__x = x

    def setY(self, y):
        self.__y = y

    def getX(self):
        return self.__x

    def getY(self):
        return self.__y



ex1 = exam(10, 20)
print(ex1.getX(), ex1.getY())
print()
ex1.setX(20)
print(ex1.getX(), ex1.getY())
 
----결과----
10 20

20 20

이렇게 getX를 하면 은닉상태인 self.__x를 불러와줍니다.

 

원래라면 은닉상태여서 값 변경이 안되게 되어있는데, setX를 하면 값 변경을 시켜줍니다.

 

 

 

 

파이썬 데코레이터를 사용하여 표현해보겠습니다.

class exam:
    def __init__(self, x, y):
        self.__x = x
        self.__y = y

    @property
    def x(self):
 
        return self.__x

    @property
    def y(self):
        return self.__y

    @x.setter
    def x(self, x):
        self.__x = x

    @y.setter
    def y(self, y):
        self.__y = y


ex1 = exam(10, 20)
print(ex1.x, ex1.y)
print()

ex1.x = 20
print(ex1.x, ex1.y)
----결과----
10 20

20 20

같으면서 약간 다릅니다. 

하지만 같은 게터와 세터의 역할을 해주는건 변함없습니다.

 

 

게터와 세터가 사용될때 사용되었다는 말을 출력해보겠습니다.

class exam:
    def __init__(self, x, y):
        self.__x = x
        self.__y = y

    @property
    def x(self):
        print('x.getter 호출')
        return self.__x

    @property
    def y(self):
        print('y.getter 호출')
        return self.__y

    @x.setter
    def x(self, x):
        print('x.setter 호출')
        self.__x = x

    @y.setter
    def y(self, y):
        print('y.setter 호출')
        self.__y = y


ex1 = exam(10, 20)
print(ex1.x, ex1.y)
print()

ex1.x = 20
ex1.y = 10
print(ex1.x, ex1.y)
 
 
----결과----
x.getter 호출
y.getter 호출
10 20

x.setter 호출
y.setter 호출
x.getter 호출
y.getter 호출
20 10

이런식으로 사용되는것을 볼 수 있습니다.

 

일반 클래스 함수로 사용되는것보다 보다편리하고 읽기 쉽게 작성할 수 있습니다.

 


 

여기까지 게터(getter)/세터(setter)에 대해 알아보아습니다.

728x90

'파이썬 > 파이썬 정리' 카테고리의 다른 글

Python) Exception - 예외처리  (1) 2023.10.25
Python) Object 클래스  (0) 2023.10.24
Python) 정보은닉(Information Hiding)  (1) 2023.10.20
Python) 함수 / 메서드  (0) 2023.10.19
Python) Class(클래스)  (1) 2023.10.18