[OOP Paradigm] 파이썬객체지향: Everything in Python is an object (1) Python Variables Are Pointers
Coding/OOP Paradigm

[OOP Paradigm] 파이썬객체지향: Everything in Python is an object (1) Python Variables Are Pointers

파이썬에서 언급되는 “Everything in Python is an object” 의 의미를 다음 보고서를 통해 이야기하고자 합니다. 위 개념을 파이썬의 Memory Collection 과 Semantics 내용을 포함하여 이야기하고, 이러한 개념이 객체 지향 프로그래밍 (OOP)으로 확장되어 어떻게 활용되는지 설명해보고자 합니다.

 

# Python Variables Are Pointers 

파이썬은 등호(=) 기호를 통해 변수를 할당합니다.

# 변수 x 에 4 를 할당 
x=4

많은 프로그래밍 언어에서 변수를 데이터를 담는 컨테이너(container)나 버킷(bucket)으로 생각합니다. C 언어를 예를 들어 이야기를 해보겠습니다.

// C 언어 예시 
int x = 4;

C 언어에서는 x 라는 메모리 컨테이너(Memory container)” 를 정의합니다. 이 메모리 컨테이너는 정수 4를 가리키는 메모리 주소를 저장합니다.

C언어와 다르게 파이썬은 변수들을 메모리 컨테이너로 생각하지 않고 포인터(Pointer)로 생각합니다. 다음 코드를 보면,

//Python 언어 예시
x=4

해당 코드는 4의 값을 가지는 컨테이너를 가리키는 포인터 x를 정의하고 있습니다. 파이썬 변수는 다양한 객체를 가리키기 때문에 (C 언어처럼) 변수를
선언할 필요가 없으며 변수가 항상 같은 유형의 정보를 가리키도록 요구할 필요도 없습니다
. 변수 이름은 모든 유형의 객체를 가리킬 수 있기에 파이썬은 dynamically-typing(동적 타이핑) 한 속성을 가지고 있음을 알 수 있습니다. 다음과 같이 파이썬이 dynamically-typed 하게 작동됩니다.

x = 1 # x 는 정수입니다.
x = ‘hello’ # 이제 x 는 문자열입니다. 
x = [1,2,3] # 이제 x 는 목록입니다.

이러한 동적 타이핑(Dynamic typing) 속성으로 Python 을 매우 빠르게 작성하고 읽기 쉽게 만듭니다.