__slots__

  在类的层次上定义时,python给实例采用一种更加紧凑的内部表示来管理属性,而非字典,这样,我们只被允许访问__slots__内部的属性

  这样定义会带来两点好处,然后具体的实践我在工作中目前运用的还很少,后面如果发现还有什么坑,我再来补充

1、创建大量实例时节省内存

2、访问属性快

 1 class Valley:
 2     __slots__ = "name", "age",
 3 
 4     def __init__(self):
 5         self.name = 'g'
 6         self.age = 25
 7 
 8 
 9 if __name__ == '__main__':
10     v = Valley()
11     print(v.name)

 

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:__slots__ - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • 命名元组

    1、命名元组也叫具名元组   可以通过名称来访问序列中的元素,摆脱对位置的依赖,他本身是一个工厂函数 2、应用1   实例化元组返回的类,其内存占用要比普通类实例要小的多,因为前者实例的属性不通过字典进行管理 1 from collections import namedtuple 2 3 # 返回可实例化的类 4 P = namedtuple(“人”, […

    Python开发 2023年4月2日
    00
  • 线程锁在单例模式中的应用

    多个线程在执行过程中会因为竞争同一个资源而产生线程冲突,造成死锁,从而引出线程锁这个概念 先拿到锁再执行业务操作: 当然我对这一块了解的还不透彻,只是了解在不加锁的多线程情况下,会破坏单例模式,所以就有了下面这一段 1 import time 2 import threading 3 4 5 def decorator(func): 6 lock = thr…

    Python开发 2023年4月2日
    00
  • 工匠回忆(一)

    不久之前看过《python工匠》,腾讯大佬朱磊写的,后来一段时间零零散散也会翻开看看,强烈推荐!!! 1、变量注释   变量与注释是最接近自然语言的东西,把变量与注释搞好,同样一段代码,却带来两种截然不同的体验   1.1、变量开辟的必要性   1.2、变量注意靠近使用   1.3、注意变量描述性要强、同时注意其长度   1.4、变量的命名要突出类型   1…

    python 2023年5月4日
    00
  • 比较赋值、浅拷贝、深拷贝

    1、无论是浅拷贝还是深拷贝,拷贝对象后是否会开辟新内存,取决于被拷贝对象的数据类型是否可变,一般来讲,可变的数据类型会开辟新内存,不可变数据类型反之不会开辟新内存,进行内存地址的引用(-5-256以外的大整数池会开辟内存,注:但我本地进行测试比较内存还是一样的,有问题) 2、要在单层、嵌套型对象中逐一比较拷贝 3、浅拷贝和深拷贝的区别主要体现在对嵌套型结构的…

    Python开发 2023年4月2日
    00
  • 浅用描述符

      可以理解为property方法的一种进阶,都可以用来创建一种新形式的实例属性,即在实例属性值的获取和设定上,增加额外的处理事务,such as:类型检查、验证   重写三个属性访问方法,其中__delete__方法是否重写取决需求   在类层次上引用描述符,即该类遵从描述符协议 1 class Check: 2 def __init__(self, na…

    Python开发 2023年4月2日
    00
  • 泛型

    第一个参数类型决定执行特定的方法体 一、单分派泛函数   只对函数的第一个参数做类型检查,发现局限性太大,没什么特别的应用场景,也可能是我没用到 1 from functools import singledispatch 2 3 4 @singledispatch 5 def func(a, *args): 6 raise TypeError(“暂不支持{…

    Python开发 2023年4月2日
    00
  • 迭代器执行切片

    普通的切片对迭代器无法实行切片操作 1 from itertools import islice 2 3 4 def func(): 5 for i in [4, 9, 6, 2]: 6 if i % 2 == 0: 7 yield i 8 9 10 f = func() 11 res = islice(f, 3) 12 for i in res: 13 p…

    Python开发 2023年4月2日
    00
  • 状态机的实现

    代码里我们经常会出现大量的条件判断,在这种情况下,我们可以实现状态机避免过度使用 有一种方式是把各种状态归为各种状态类 还有一种方式是修改实例的__class__属性 1 “”” 2 状态机的实现 3 修改实例的__class__属性 4 “”” 5 6 7 class Connection: 8 def __init__(self): 9 self.new…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部