250x250
Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Crawling
- 딕셔너리
- 프로젝트
- 조건문
- 스크랩핑
- 슬라이싱
- 크롤링
- 자격증
- SQLD
- lv0
- 파이선
- 자격증공부
- 파이썬
- 정보처리기사
- 태그
- 메서드
- django
- 데이터 타입
- HTML
- SQL 개발자
- 데이터베이스
- 정리
- scraping
- 1과목
- SQL
- 튜플
- Python
- time.sleep
- CSV
- 프로그래머스
Archives
- Today
- Total
나의 공부 일기
Python) getter/setter 본문
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 |