본문 바로가기
개발

파이썬의 모든 것은 객체다, 진짜일까?

by Kyutree 2026. 1. 31.

아침에 커피를 마시면서 문득 이런 생각이 들었습니다.

파이썬은 '모든 것이 객체'라는데, 정말 그럴까요?

단순한 숫자부터 복잡한 함수까지, 모든 것이 객체라는 주장이 사실인지 꼼꼼하게 파헤쳐 보겠습니다.

 

파이썬, 객체지향 언어의 핵심

 

파이썬은 객체지향 프로그래밍(OOP) 패러다임을 강력하게 지원하는 언어입니다.

객체지향 프로그래밍에서는 데이터를 속성(attribute)으로, 기능을 메서드(method)로 묶어 객체라는 단위로 관리합니다.

파이썬에서 '모든 것이 객체'라는 말은, 정수, 실수, 문자열과 같은 기본적인 자료형은 물론이고, 리스트, 딕셔너리, 함수, 심지어는 클래스 자체까지도 객체로 취급된다는 의미입니다.

이는 파이썬의 핵심 철학 중 하나이며, 파이썬을 더욱 유연하고 강력하게 만들어주는 요소입니다.

 

객체, 그 실체를 파악하다

 

그렇다면 객체란 정확히 무엇일까요?

객체는 메모리 공간에 할당된 특정 데이터의 묶음입니다.

각 객체는 고유한 주소(identity), 속성(attribute), 그리고 메서드(method)를 가집니다.

`id()` 함수를 사용하면 객체의 메모리 주소를 확인할 수 있습니다.

변수는 객체 자체를 저장하는 것이 아니라, 객체가 저장된 메모리 주소를 가리키는 포인터 역할을 합니다.

이러한 특징 덕분에 파이썬에서는 변수에 다양한 타입의 객체를 자유롭게 할당할 수 있습니다.

마치 역세권이라 접근성이 좋은 것처럼, 파이썬의 객체 모델은 유연하고 편리합니다.

 

변수, 이름 이상의 의미

 

파이썬에서 변수는 단순히 값을 저장하는 공간이 아니라, 객체를 참조하는 이름표와 같습니다.

변수에 값을 할당하는 것은, 해당 값을 가진 객체를 생성하고 변수가 그 객체를 가리키도록 하는 것입니다.

예를 들어, `a = 5`라는 코드는 정수 5를 담은 객체를 생성하고, 변수 `a`가 그 객체를 가리키도록 합니다.

만약 `b = 5`라고 다시 선언하면, 변수 `b` 또한 동일한 정수 5 객체를 가리키게 됩니다.

이는 파이썬이 메모리를 효율적으로 관리하기 위해 immutable 객체에 대해 사용하는 최적화 기법입니다.

국밥은 든든한 한 끼 식사를 제공하는 것처럼, 파이썬의 변수 개념은 간결하면서도 강력합니다.

 

Mutable vs Immutable: 객체의 불변성

 

파이썬의 객체는 크게 mutable(가변) 객체와 immutable(불변) 객체로 나눌 수 있습니다.

Mutable 객체는 생성된 후에도 그 값을 변경할 수 있는 객체입니다.

리스트(list)나 딕셔너리(dictionary) 등이 대표적인 mutable 객체입니다.

반면, immutable 객체는 생성된 후에는 그 값을 변경할 수 없는 객체입니다.

정수(int), 실수(float), 문자열(string), 튜플(tuple), 불린(boolean) 등이 immutable 객체에 속합니다.

객체의 불변성은 프로그램의 안정성과 예측 가능성을 높이는 데 기여합니다.

 

함수도 객체다

 

흥미로운 점은 파이썬에서 함수 또한 객체라는 사실입니다.

함수는 다른 객체와 마찬가지로 변수에 할당될 수 있고, 다른 함수의 인자로 전달될 수도 있으며, 함수의 반환 값으로 사용될 수도 있습니다.

이러한 특징은 파이썬을 더욱 강력하고 유연하게 만들어 줍니다.

예를 들어, 함수를 리스트에 저장하여 필요에 따라 호출하거나, 함수를 인자로 받는 고차 함수를 작성할 수 있습니다.

최근 인기를 얻고 있는 함수형 프로그래밍 패러다임을 파이썬에서 쉽게 구현할 수 있는 이유 중 하나입니다.

 

파이썬에서 '모든 것이 객체'라는 개념은 처음에는 다소 추상적으로 느껴질 수 있지만, 파이썬의 동작 방식을 이해하는 데 매우 중요한 역할을 합니다.

객체, 변수, mutable/immutable 객체의 개념을 명확히 이해하면 파이썬 코드를 더욱 효율적으로 작성하고 디버깅하는 데 도움이 될 것입니다.

파이썬의 객체 모델은 유연성과 강력함을 동시에 제공하며, 파이썬을 배우고 사용하는 모든 사람에게 깊은 이해를 요구합니다.

오늘 살펴본 내용들을 바탕으로 파이썬의 객체지향적인 특징을 더욱 깊이 탐구해 보시길 바랍니다.