# 案例:'''某网络游戏中,定义了玩家类Player(id,name,status)每当有一个玩家,就会在服务器创建一个Player实例当在线人数过多时,将产生大量实例(百万级别),消耗内存如何降低这些实例的大量实例的内存开销?解决方案:定义类的 __slots__属性,它是用来声明实例属性名字的列表'''class Player(object): __slots__ = ['name', 'id', 'status'] def __init__(self, name, id, status): self.name = name self.id = id self.status = status def test(self): print(self.name) print(self.id) print(self.status)class Player1(object): def __init__(self, name, id, status): self.name = name self.id = id self.status = statusp = Player("Li", '111', '10')p.test()p1 = Player1("Li", '111', '10')print(dir(p1))print(dir(p))print(set(dir(p1)) - set(dir(p))) # 求两个实例的差集 p1比p多了 {'__weakref__', '__dict__'} 其__dict__占用大量内存import sysprint(sys.getsizeof(p1.__dict__)) # 打印出p1.__dict__占用内存大小"""实例p1可以动态生成属性,而p则不行,实现阻止动态绑定"""p1.x = 1p1.__dict__['y'] = 2print(p1.__dict__)# p.x = 1# p.__dict__['y'] = 2