zoukankan      html  css  js  c++  java
  • Python:类的__slots__魔法,列表辗平,类的一行式构造器

    __slots__魔法

    在Python中,每个类都有实例属性。默认情况下Python⽤⼀个字典来保存⼀个对象的实例属性。这⾮常有⽤,因为它允许我们在运⾏时去设置任意的新属性。
    Python不能在对象创建时直接分配⼀个固定量的内存来保存所有的属性。对于创建成千上万个对象时,会消耗掉许多内存。
    可使用__slots__方法告诉Python不要使用字典,而且只给一个固定集合的属性分配空间
     1 # 下面代码不使用__slots__
     2 class MyClass(object):
     3     def __init__(self, name, identifier):
     4         self.name = name
     5         self.identifier = identifier
     6         self.set_up()
     7 
     8 # 下面代码使用__slots__
     9 class MyClass(object):
    10     __slots__ = ['name', 'identifier']
    11     def __init__(self, name, identifier):
    12         self.name = name
    13         self.identifier = identifier
    14         self.set_up()
    15 # 第⼆段代码会为你的内存减轻负担。
    1 # 列表辗平,通过使⽤itertools包中的itertools.chain.from_iterable轻松快速的辗平⼀个列表
    2 import itertools
    3 a_list = [[1, 2], [3, 4], [5, 6]]
    4 print(list(itertools.chain.from_iterable(a_list)))
    5 
    6 # 一行式的构造器,避免类初始化时大量重复的赋值语句
    7 class A(object):
    8     def __init__(self, a, b, c, d, e, f):
    9         self.__dict__.update({k:v, for k,v in locals().items() if k != 'self' })
     
  • 相关阅读:
    使用CSS将图片转换成黑白(灰色、置灰)
    require.js
    Tortoisegit安装下载
    谷歌浏览器添加扩展程序
    IOS 照相问题
    java的interface和PHP的区别
    Object中的hashCode方法
    PHP、js、Java中的匿名函数、闭包、回调函数
    Java和PHP中的浅克隆和深克隆
    unicode字符编码中一些专业词汇的全称
  • 原文地址:https://www.cnblogs.com/Micro0623/p/9957812.html
Copyright © 2011-2022 走看看