Python 2.7.11 (default, Apr 12 2016, 14:09:35)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
>>> class Empty:pass
>>> import sys
>>> print ("show",sys.getsizeof(Empty)) # i get 1016
('show', 104)
>>> print ("show",sys.getsizeof(Empty()))
('show', 72)
아니요 1016 바이트. 보시다시피 이것은 구현에 따라 다릅니다.다른 흥미로운 크기, 사용하여 새로운 스타일의 클래스 :
>>> print ("show",sys.getsizeof(object()))
('show', 16)
>>> class Empty2(object):pass
>>> print ("show",sys.getsizeof(Empty2))
('show', 904)
>>> print ("show",sys.getsizeof(Empty2()))
('show', 64)
빈 클래스 정의는 여전히 클래스 정의 따라서 클래스 객체 (more here)입니다 : 클래스 정의를 입력
, 새로운 네임 스페이스가 만들어져 로컬 범위로 사용됩니다.
클래스 정의가 정상적으로 끝나면 클래스 개체가 만들어집니다.
>>> dir(Empty)
['__doc__', '__module__']
>>> dir(Empty2)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
를 실행 한 다음,이
모든 클래스 객체
을 수행하여 당신이 볼 속성의 최소한의 세트를 가지고 ... 기본적으로 클래스 정의에 의해 생성 된 네임 스페이스의 내용 래퍼입니다 다른 구현 세부 사항들도있다. 이것은 예상보다 큰 규모의 이유이다.
마지막으로, 참고 것으로 예상하고 객체 클래스만큼 크지로 참으로 오히려 작은 클래스 인스턴스. Empty
은 클래스 객체입니다. Empty()
은 클래스 인스턴스입니다.
내 컴퓨터에서 '104'를 반환합니다. – prashkr
Python2.x에있는 경우이 https://repl.it/languages/python3 –
의 코드를 실행했습니다. – styvane