python的魔法__slots__,python魔法__slots_,看python社区大妈组
python的魔法__slots__,python魔法__slots_,看python社区大妈组
看python社区大妈组织的内容里边有一篇讲python内存优化的,用到了__slots__。然后查了一下,总结一下。感觉非常有用
python类在进行实例化的时候,会有一个__dict__属性,里边有可用的实例属性名和值。声明__slots__后,实例就只会含有__slots__里有的属性名。
# coding: utf-8class A(object): x = 1 def __init__(self): self.y = 2a = A()print a.__dict__print(a.x, a.y)a.x = 10a.y = 10print(a.x, a.y)class B(object): __slots__ = ('x', 'y') x = 1 z = 2 def __init__(self): self.y = 3 # self.m = 5 # 这个是不成功的b = B()# print(b.__dict__)print(b.x, b.z, b.y)# b.x = 10# b.z = 10b.y = 10print(b.y)class C(object): __slots__ = ('x', 'z') x = 1 def __setattr__(self, name, val): if name in C.__slots__: object.__setattr__(self, name, val) def __getattr__(self, name): return "Value of %s" % namec = C()print(c.__dict__)print(c.x)print(c.y)# c.x = 10c.z = 10c.y = 10print(c.z, c.y)c.z = 100print(c.z)
输出内容:
{'y': 2}(1, 2)(10, 10)(1, 2, 3)10Value of __dict__1Value of y(10, 'Value of y')100
相关内容
- python列出文件夹下的所有文件或者目录,,python的os模块
- python使用 glob 获得文件列表,pythonglob,import osos.
- python base64 decode出现incorrect padding错误的解决方法,ba
- 用Buildout来构建Python项目,buildout构建python,什么是Buil
- python获得windows的进程信息,pythonwindows进程,import win32
- 使用pip命令查看系统环境中已经安装的python包,pippyt
- python下载大文件代码,,如果下载小文件,可以直接
- python文本比较库difflib使用示例,pythondifflib,python的包很
- python 复制文件或者文件夹,,python提供了shu
- Python的线程控制类,Python线程控制类,下面是一个基础的
评论关闭