场景解析
网游的用户, 大量的用户本质都是类的实例化对象, 在线人数百万级时对内存是很大的挑战, 如何减少这部分的内存
方法解析
__slots__ 方法
取消默认的类实例中的 __dict__ 方法, 限制可选属性为 __slots__ 限定的内容,
失去了 __dict__ 实例对象不可以设置 __slots__ 中不存在的字典键, 起到限制作用也取消了 __dict__ 的内存占用
import sys class Palyer(object): def __init__(self, name, uid, status=0, level=1): self.name = name self.uid = uid self.status = status self.level = level class Palyer2(object): __slots__ = ["name", "stat", "uid", "level"] def __init__(self, name, uid, status=0, level=1): self.name = name self.uid = uid self.stat = status self.level = level p1 = Palyer("001", "yang") p2 = Palyer2("001", "tuo") print dir(p1) print dir(p2) print set(dir(p1)) - set(dir(p2)) # set(['__dict__', 'status', '__weakref__']) print sys.getsizeof(p1.__dict__) # 272 # print sys.getsizeof(p2.__dict__) # AttributeError: 'Palyer2' object has no attribute '__dict__' p1.abc = 123 # p2.abc = 123 # AttributeError: 'Palyer2' object has no attribute 'abc'