当我尝试sys.getsizeof:
>>> import sys
>>> sys.getsizeof(int)
400
>>> sys.getsizeof(2)
28
我对结果感到困惑:
2是int类的实例,但字节数比其继承的类少。
>>> sys.getsizeof(list)
400
>>> sys.getsizeof(list("list"))
120
列表也是一样。
2是否不从int类继承?
答案 0 :(得分:2)
int
是一个类,表示它是type
对象:
>>> type(int)
<class 'type'>
>>> from sys import getsizeof
>>> getsizeof(int)
400
sys.getsizeof返回该对象的大小,而不是其实例。使用()
创建int
的实例并查看其大小
>>> getsizeof(int())
24
>>> getsizeof(int(2))
28
>>> getsizeof(0)
24
>>> getsizeof(2)
28
这不仅适用于内置类型,使用用户定义的类也可以观察到相同的行为:
>>> class a:
... pass
...
>>> getsizeof(a)
1056
>>> getsizeof(a())
56
>>> obj = a()
>>> getsizeof(obj)
56