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
答案 0 :(得分:5)
可以通过在新样式类定义中定义
$('.delete-btn').click(function(){ userId = $(this).data('userId'); alert(userId); });
来覆盖默认值。__slots__
声明采用一系列实例变量,并在每个实例中保留足够的空间来保存每个变量的值。保存空间是因为没有为每个实例创建__slots__
。
强调我的。
这意味着您的班级定义必须如下:
__dict__
如果您尝试分配插槽定义中不存在的变量,则可以判断您是否正确。您将获得class Player(object):
__slots__ = ['name','age','gsnum']
def __init__(self,name,age,gsnum):
self.name = name
self.age = age
self.gsnum = gsnum
。
顺便提一下,新类型定义的类是AttributeError
,但是我的系统上的插槽是32 bytes
。