어떤 종류의 데이터를 파이썬 인터 피터가 객체에 저장합니까? 추천
예를 들어, 코드의 다음파이썬 객체와 클래스의 메모리 레이아웃은 무엇입니까?
class MyClass:
pass
if __name__ == "__main__":
c = MyClass()
import sys
print sys.getsizeof(c),sys.getsizeof(MyClass)
왜 출력 72, 104? 클래스가 객체 인스턴스보다 큰 이유는 무엇입니까? 72 자와 104자를 차지하는 클래스와 객체는 무엇을 저장해야합니까? 놀랍게도
, 나는이 실행
class MyClass:
def __init__(self):
self.mIntValue = 1024
self.mStringValue = "hust";
if __name__ == "__main__":
c = MyClass()
import sys
print sys.getsizeof(c),sys.getsizeof(MyClass)
출력은 여전히 72, 104,하지만 난이 추가 속성을 추가, 그래서 개체가 "더 큰"이 될 것을 생각한다. 글쎄, 결과는 그렇게 보이지 않는다.
어떤 Python 버전입니까? 3.3에서는'c '는 32,'MyClass'는 488을 얻습니다. – delnan
버전은 2.7.2입니다. – python
그러면 MyClass는 구식 클래스입니다. 그것들은 피해야하며, 72 바이트의 대부분을 어떻게 든 차지한다면 놀라지 않을 것입니다. – delnan