데이터 접근 관리: 비공개 속성

Python의 객체 지향 프로그래밍

Alex Yarosh

Content Quality Analyst @ DataCamp

모든 클래스 데이터는 공개입니다

우리 모두 성인입니다

Python의 객체 지향 프로그래밍

접근 제한

  • 네이밍 규칙
  • @property로 접근 제어
  • __getattr__(), __setattr__() 재정의
Python의 객체 지향 프로그래밍

네이밍 규칙: 내부 속성

obj._att_name, obj._method_name()

  • 앞에 _ 한 개 → "내부용"
  • 공개 API 아님
  • 클래스 사용자: 건드리지 마세요
  • 클래스 개발자: 구현 상세, 헬퍼 함수 등에 사용

df._is_mixed_type, datetime._ymd2ord()

Python의 객체 지향 프로그래밍

네이밍 규칙: 준비공개 속성

obj.__attr_name , obj.__method_name()

  • 앞에 __ 있고 뒤에는 없음 → "비공개"
  • 상속되지 않음
  • 네임 맹글링: obj.__attr_nameobj._MyClass__attr_name 로 해석
  • 상속 클래스에서 이름 충돌 방지에 사용

 

앞뒤에 모두 __는 파이썬 내장 메서드에만 사용됩니다 (__init__(), __repr__() 등).

Python의 객체 지향 프로그래밍

연습해 봅시다!

Python의 객체 지향 프로그래밍

Preparing Video For Download...