Python객체지향

property 기본

메서드처럼 검증이나 계산을 하면서도 속성처럼 읽히게 만드는 Python `property` 기본 패턴입니다.

마지막 수정 2026년 3월 19일

기본 패턴

python
class User:
    def __init__(self, name):
        self._name = name

    @property
    def name(self):
        return self._name

설명

  • property는 메서드 호출 문법 없이도 계산된 값이나 검증된 값을 속성처럼 다루게 해 줍니다.
  • 읽기용 속성만 만들 수도 있고, setter를 붙여 값 대입 시 검증을 넣을 수도 있습니다.
  • 외부 인터페이스는 단순하게 유지하면서 내부 표현은 바꿀 수 있다는 점이 장점입니다.
  • 단순 공개 필드로 충분한 경우까지 무조건 property를 쓰는 것은 과할 수 있습니다.

짧은 예제

python
class User:
    def __init__(self, age):
        self._age = age

    @property
    def age(self):
        return self._age

빠른 정리

표현의미
@propertygetter 정의
@name.settersetter 정의
속성처럼 접근obj.name 형태 유지
내부 검증 가능값 읽기/쓰기 제어

공식 참고: Classes, Built-in Functions

주의할 점

속성 접근은 보통 "가볍다"는 기대를 줍니다. property 안에서 무거운 작업이나 네트워크 요청 같은 동작을 숨기면 사용자가 코드를 읽기 어렵습니다.