场景解析
网游的用户, 大量的用户本质都是类的实例化对象, 在线人数百万级时对内存是很大的挑战, 如何减少这部分的内存
方法解析
__slots__ 方法
取消默认的类实例中的 __dict__ 方法, 限制可选属性为 __slots__ 限定的内容,
失去了 __dict__ 实例对象不可以设置 __slots__ 中不存在的字典键, 起到限制作用也取消了 __dict__ 的内存占用
import sysclass Palyer(object): def __init__(self, name, uid, status=0, level=1): self.name = name self.uid = uid self.status = status self.level = levelclass 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 = levelp1 = 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'