gpt4 book ai didi

python - 为什么在我的类里面使用 __slots__ 不会改变大小?

转载 作者:行者123 更新时间:2023-11-28 16:25:07 24 4
gpt4 key购买 nike

最近给 friend 讲解了__slots__的用法。我想向他展示结果并使用了以下代码:

import sys


class Foo:
__slots__ = 'a', 'b'

def __init__(self, a, b):
self.a = a
self.b = b


class Bar:
def __init__(self, a, b):
self.a = a
self.b = b


a = Foo(10, 20)
b = Bar(10, 20)

print(sys.getsizeof(a))
print(sys.getsizeof(b))

Python 3 控制台上的输出是:

 56
56

Python 2 的输出是:

 72
72

为什么大小没有区别?

最佳答案

对于Python2,你需要继承object来激活__slots__机制

问题是你在比较苹果和橙子。

sys.getsizeof 只是一个浅尺寸,即。它不会计算所有内部对象的大小。

对于 __slots__ 版本,您会看到它与插槽数成正比

对于普通对象,你应该查看实例的大小__dict__来做出合理的比较。

另一种方法是分配几百万个这样的对象,然后查看操作系统报告使用了多少内存。

关于python - 为什么在我的类里面使用 __slots__ 不会改变大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37291578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com