📘 Django 코드에서 점(.)과 언더스코어(_) 완전 정복
Django나 Python을 처음 배울 때, 가장 헷갈리는 표현 중 하나가 바로 아래와 같은 코드입니다:
page_object.paginator.page_range
"이건 함수인가? 속성인가? 왜 중간에 _도 있고 .도 있고 헷갈리지?"
이 질문을 정확히 이해하고, **점(.)**과 **언더스코어(_)**의 역할을 완전히 정리해봅니다.
🔹 1. page_object는 내가 정의한 변수
paginator = Paginator(blogs, 10)
page = request.GET.get('page')
page_object = paginator.get_page(page)
- page_object는 Paginator.get_page()의 결과를 저장한 변수명입니다.
- page_object는 개발자가 원하는 이름으로 지정할 수 있습니다. (my_page, current_page 등도 가능)
🔹 2. 점(.)은 객체의 속성에 접근
page_object.paginator.page_range
- .은 Python에서 객체 내부의 속성에 접근할 때 사용하는 문법입니다.
- 예시 흐름:
- page_object 객체 안에
- paginator 속성이 있고
- 그 안에 page_range라는 또 다른 속성이 있음
📦 시각적 구조:
page_object
└── paginator
└── page_range
🔹 3. 언더스코어(_)는 단어를 구분하기 위한 이름 구성
- page_range나 num_pages처럼 보이는 이름들은
단순히 변수명이나 속성명이 두 단어 이상으로 구성되어 읽기 쉽게 만든 것입니다. - 이 스타일을 snake_case라고 부릅니다.
예시:
속성명 의미
created_at | 생성된 날짜 |
num_pages | 전체 페이지 수 |
page_range | 전체 페이지 번호 리스트 |
previous_page_number | 이전 페이지 번호 |
🔹 4. 함수인지 속성인지 구분하는 법
형태 의미 예시 실행 여부
obj.prop | 속성 (값) | page_object.paginator | ❌ 실행 X |
obj.method() | 함수 (동작) | paginator.get_page(2) | ✅ 실행 O |
- 괄호 ()가 붙으면 함수(메서드)
- 그냥 점(.)으로 이어진 건 속성
🔍 최종 예시 해석
page_object.paginator.page_range
- page_object → 현재 페이지 객체 (내가 만든 변수)
- .paginator → 이 객체 안에 있는 Paginator 클래스 인스턴스
- .page_range → 전체 페이지 숫자 리스트를 반환하는 속성 (예: [1, 2, 3, 4, 5])
✔️ page_range는 함수 아닙니다. 실행하지 않아요!
✔️ 그냥 값을 읽는 속성입니다.
🧠 요약 정리표
기호 역할 예시 의미
. | 객체 속성 접근 | blog.author.username | 속안으로 접근 |
_ | 단어 구분용 이름 구성 | created_at | 읽기 쉬운 변수명 |
() | 함수 호출 | get_page(3) | 동작 실행 |
이제 Django나 Python에서 객체 구조를 읽을 때,
어디가 함수고 어디가 값인지, 그리고 변수명이 어떻게 구성됐는지 훨씬 더 명확하게 이해하실 수 있을 거예요! 😉
'기술블로그-Django편' 카테고리의 다른 글
📌 Django 뷰 구성 전략 - CBV vs FBV, 그리고 혼합 전략까지 완벽 비교 정리 (0) | 2025.05.08 |
---|---|
📘 URL과 Django에서의 & 사용법 + 검색 유지 페이지네이션 패턴 + Q 객체 완전 이해 (0) | 2025.05.07 |
📘 Django 페이지네이션: 점(...) 생략 표시 조건 완전 정복 (0) | 2025.05.07 |
📘 Django 페이지네이션 템플릿 코드 완전 정복 (0) | 2025.05.07 |
📘 Django Paginator: get_page(함수) vs get.page(속성) 차이 완벽 정리 (0) | 2025.05.07 |