본문 바로가기
목차
Python

[Py] 객체(object)에 대한 정보 확인하기

by ds31x 2025. 3. 19.
728x90
반응형

Python에서 object(객체)란?

type, id, refcount, value 를 속성으로 가지고 있는 a chunk of data.

variable과 object에 대한 보다 자세한 내용은 다음을 참고: https://dsaint31.tistory.com/517

 

[Python] Variable (and Object)

Variable (and Object)1. 정의Python에서 Variable은 Memory에 할당된 Object를 참조하는 Name (=Reference, Identifier)에 불과하다.이 문서에서 Object는 Python에서의 Object로 type과 value, ID (CPython에서는 할당된 memory addr

dsaint31.tistory.com

  • 프로그래밍에서 object에 대한 일반적인 개념은 이 문서의 맨 끝의 같이보면 좋은 자료들에 좋은 참고 자료가 있음.

 


1. Data Type (or Class)

type(obj)
# obj.__class__ # dunder 인 class 로 확인.

 

참고로 type은 함수가 아닌 callable object로 meta-class임.

https://ds31x.tistory.com/573#2.3-%EC%B0%B8%EA%B3%A0-typeobj%EC%9D%98-%EC%9D%98%EB%AF%B8-%EA%B5%AC%EB%B6%84

 

Python Class Definition and Object Model

1. Object-Oriented Programming (OOP)에서의 Class 개념1.1 Class의 역할Class = State + Behavior Class는 Object-Oriented Programming에서 State와 Behavior를 함께 정의하는 추상화 단위임State는 Object가 보유하는 데이터의 집합

ds31x.tistory.com


2. ID (CPython의 경우 주소에 해당)

id(obj)
  • hex()를 통해 hexadecimal로 표시하여 memory address를 나타내는 경우가 일반적
  • 아니면 f-string에서 x 형식문자코드를 이용.

3. 메모리에서 차지하고 있는 Size (bytes)

import sys
sys.getsizeof(obj)
  • entry로 가지고 있는 객체들의 실제 크기는 제외됨.
  • list 등의 container 객체에 대한 실제 크기는 요소들에 대한 iteration 을 이용하여 구해내야 함(코드로 구현 필요.)

4. Attributes

dir(obj) # 객체의 모든 속성과 메서드를 확인.
# obj.__dict__ # 객체 자신의 속성들 확인. (상속받은 것들은 나오지 않으며 built-in type에선 제공하지 않음.)

5. Reference Count

sys.getrefcount(obj) # getrefcount에 의해 임시로 reference가 추가되므로 -1을 해줘야 원래 값.
  • PVM에서 caching되고 있는 255이하의 정수들에선 32bit unsigned int의 최대값인 4294967295 로 나옴.
  • 이는 해당 객체가 영구적으로 유지됨을 의미함.
  • 대상 객체가 인자로 넘겨지는 점을 유의.
  • IPython 등이 아닌 Python의 순수 iteractive shell 로 수행하길 권함 (캐싱등을 피하기 위해 shell 실행후 최초로 실행할 것).

관련 메서드에 대한 보다 자세한 내용은 다음을 참고:https://dsaint31.tistory.com/497

 

[Programming] Garbage Collection (GC)

Garbage Collection 이란?Garbage collection (GC)은 Programming에서 memory를 관리하는 기법 중의 하나임. Dynamical Memory Allocation에서 더 이상 사용되지 않는 object 또는 data에 할당된 memory를 자동으로 회수하는 Proc

dsaint31.tistory.com


6. referrers 의 리스트

import gc
gc.get_referrers(obj) # 참조하고 있는 객체들의 리스트를 반환.
# 수치로 얻으려면 len(gc.get_referrers(obj)) 로 처리해야 함.

 


7. Super-Classes 

obj.__class__.__bases__ # 직접적인 부모클래스.
obj.mro() # Method Resolution Order를 따라 모든 super-class반환.

같이보면 좋은 자료들

https://dsaint31.me/mkdocs_site/python/oop/oop_0_01_Object/

 

BME

object Object (객체) 란 보거나 만질 수 있는 사물 (공간을 차지하고 있는 물질적인 사물) OOP에선 Concept(개념) 도 Object 임. Application(응용프로그램)에서, 명확한 한계와 의미를 가지고 있는 사물 이나

dsaint31.me


 

728x90