__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 from functools import singledispatch 2 3 4 @singledispatch 5 def func(a, *args): 6 raise TypeError(“暂不支持{…

    Python开发 2023年4月2日
    00
  • 装饰器的多种实现方式

    一、基于函数实现   1、嵌套函数   代码实现: 1 from functools import wraps 2 3 4 def decorator(param): 5 def wrapper(func): 6 @wraps(func) 7 def verify(*args, **kwargs): 8 if param == ‘g’: 9 print(“&…

    Python开发 2023年4月2日
    00
  • 多组合少继承

    继承:   强调类与类之间的关系 组合:   强调对象和对象之间的关系 清楚python支持多继承,从而涉及到一些MRO的点,这里不做赘述,在实际工作过程中,我们经常会使用继承来实现代码复用,如果仅仅是为了复用,还是比较推荐使用组合方式,因为继承方式,使得类与类之间的耦合性变得异常紧密,这多少违背了迪米特法则 1 “”” 2 OOP中三大特性之一:继承 3 …

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

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

    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
  • 迭代器执行切片

    普通的切片对迭代器无法实行切片操作 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
  • 钩子函数

    控制子类的的创建 1、元类   这种方式可能是最常见的也是我们最先知晓的,当然这种方式可能需要我们对元类有比较深入的了解,所以引入了下面的这种方式 2、钩子函数   __init__subclass__,字面意思,父类实现了该双下方法,其后凡是继承他的派生类,都会触发此方法,进行派生类的初始化,实现派生类属性的增加及修改 1 class Meta: 2 de…

    Python开发 2023年4月2日
    00
  • 方法的多种调用方式

      方法调用确实我们每个人都会,但是我觉得大家可能用的最多的就是那种常规的方式,这里呢,我要记录一下另外几种方式 1 from operator import attrgetter 2 from operator import methodcaller 3 4 5 class Valley: 6 def func(self): 7 print(“测试方法”)…

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