为什么python插槽不节省内存?

2024-09-30 10:36:47 发布

您现在位置:Python中文网/ 问答频道 /正文

class Player:
    # __slots__ = ['name','age','gsnum']
    def __init__(self,name,age,gsnum):
        self.name = name
        self.age = age
        self.gsnum = gsnum

我用三个属性定义了这个类

使用__slots__保存内存时:

一个实例得到36个(sys.getsizeof()) 如果不使用__slots__, 我的内存仍然是36

有什么问题吗? 32位Python 2.7


Tags: 实例内存nameselfage属性定义init
1条回答
网友
1楼 · 发布于 2024-09-30 10:36:47

Python Documentation声明:

The default can be overridden by defining __slots__in a new-style class definition. The __slots__ declaration takes a sequence of instance variables and reserves just enough space in each instance to hold a value for each variable. Space is saved because __dict__ is not created for each instance.

强调我的。在

这意味着您的类定义必须如下所示:

class Player(object):
    __slots__ = ['name','age','gsnum']
    def __init__(self,name,age,gsnum):
        self.name = name
        self.age = age
        self.gsnum = gsnum

如果你试图分配一个在slots定义中不存在的变量,你可以判断你是否正确。您将得到一个AttributeError。在

{{myslots在cd3}>类上是新的。在

相关问题 更多 >

    热门问题