博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
魔法方法 __slots__ 方法
阅读量:5828 次
发布时间:2019-06-18

本文共 1038 字,大约阅读时间需要 3 分钟。

场景解析

网游的用户, 大量的用户本质都是类的实例化对象, 在线人数百万级时对内存是很大的挑战, 如何减少这部分的内存

方法解析

__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'

 

转载于:https://www.cnblogs.com/shijieli/p/11101851.html

你可能感兴趣的文章
UVA 146 ID Codes
查看>>
Quartus使用Verilog设计计数器步骤全解
查看>>
mysql root密码重置
查看>>
33蛇形填数
查看>>
我为Net狂 ~ 社交平台系列小集合!
查看>>
Windows API一日一练(66)CreateWaitableTimer和SetWaitableTimer函数
查看>>
中秋节
查看>>
选择排序
查看>>
wpf datagrid 遍历行
查看>>
SQL Server 数据库的数据和日志空间信息
查看>>
Go语言的for循环
查看>>
前端基础之JavaScript
查看>>
ThreadLocal
查看>>
自己动手做个智能小车(6)
查看>>
2018.7.9练习
查看>>
自己遇到的,曾未知道的知识点
查看>>
P1382 楼房 set用法小结
查看>>
分类器性能度量
查看>>
Es学习第七课, term、terms、match等基本查询语法
查看>>
java 解析http返回xml数据
查看>>