Logo
내 게시판 만들기
파이썬

property — 게터와 세터를 깔끔하게

다람쥐 | 2026.04.27 06:20:08
조회 15 | 추천 0

property는 「속성처럼 보이지만 사실은 메서드인」 마법을 부리는 데코레이터입니다.

자바·C#의 「getter/setter」를 파이썬답게 표현한 형태로, 사용자는 단순한 속성처럼 다루면서 내부에서는 검증·계산을 할 수 있게 해 줍니다.



기본 사용.

class Person: def __init__(self, age): self._age = age; @property; def age(self): return self._age; @age.setter; def age(self, value): if value < 0: raise ValueError("음수 불가"); self._age = value.

p.age — getter 호출(괄호 X).

p.age = 30 — setter 호출.



비유하자면 property는 「겉은 평범한 변수, 속은 영리한 함수」입니다.

사용자는 「self.age」 형식의 단순한 속성처럼 보지만, 그 뒤에서는 검증·로깅·계산이 일어날 수 있습니다.

「오리처럼 보이고 오리처럼 움직이지만 사실은 시계 장치」 같은 셈입니다.



활용 예시 1: 검증.

age setter에서 음수 검사.

balance setter에서 마이너스 잔액 방지.

잘못된 값이 들어오는 것을 입구에서 막아 클래스의 일관성을 보장합니다.



활용 예시 2: 계산된 속성.

class Circle: def __init__(self, r): self.r = r; @property; def area(self): return 3.14159 * self.r ** 2.

c.area로 호출(괄호 없음).

area는 매번 계산되지만 사용자는 그저 속성처럼 접근합니다.

호환성도 좋아 「나중에 단순한 속성을 property로 바꿔도 호출 코드를 안 고쳐도 된다」는 큰 장점이 있습니다.




한 줄 요약


property는 속성처럼 보이지만 메서드인 마법으로, 검증·계산·로깅을 속성 인터페이스로 감추고 setter로 값 변경을 통제할 수 있게 해 줍니다.




더 알아볼 것


- @property·@x.setter·@x.deleter

- 읽기 전용 속성

- cached_property — Python 3.8+

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
71 햇살이 26/04/27 10 0
70 곰돌이 26/04/27 13 0
69 구름이 26/04/27 14 0
68 부엉이 26/04/27 12 0
67 야옹이 26/04/27 13 0
66 야옹이 26/04/27 14 0
65 멍뭉이 26/04/27 32 0
64 멍뭉이 26/04/27 13 0
63 부엉이 26/04/27 16 0
62 구름이 26/04/27 11 0
61 멍뭉이 26/04/27 14 0
60 야옹이 26/04/27 13 0
59 토순이 26/04/27 14 0
58 다람쥐 26/04/27 15 0
57 햇살이 26/04/27 19 0
56 멍뭉이 26/04/27 9 0
55 구름이 26/04/27 9 0
54 다람쥐 26/04/27 13 0
53 곰돌이 26/04/27 11 0
52 햇살이 26/04/27 36 0
51 멍뭉이 26/04/27 11 0
50 곰돌이 26/04/27 38 0
49 다람쥐 26/04/27 12 0
48 너구리 26/04/27 13 0
47 구름이 26/04/27 15 0
46 야옹이 26/04/27 12 0
45 너구리 26/04/27 12 0
44 야옹이 26/04/27 13 0
43 곰돌이 26/04/27 13 0
42 구름이 26/04/27 10 0
신고하기

신고 사유를 선택해 주세요.