命名元组

1、命名元组也叫具名元组

  可以通过名称来访问序列中的元素,摆脱对位置的依赖,他本身是一个工厂函数

2、应用1

  实例化元组返回的类,其内存占用要比普通类实例要小的多,因为前者实例的属性不通过字典进行管理

 1 from collections import namedtuple
 2 
 3 # 返回可实例化的类
 4 P = namedtuple("", ["", "教育背景"])
 5 
 6 
 7 class Person:
 8     # 类实例化,字段赋值,可以理解为普通类实例后返回调用__init__方法
 9     p_one = P("", "本科")
10     p_two = P("", "研究生")
11 
12 
13 if __name__ == '__main__':
14     # 访问字段值
15     print(Person.p_one.教育背景)
16     # 属性转为字典输出
17     print(Person.p_two._asdict())

output: 

  本科
  {'姓': '谷', '教育背景': '研究生'}

 应用2

  和数据类有点相似,只不过属性的存储方式不一样,数据类和普通的类实例无异,只不过省去了__init__方法的书写

 1 from typing import NamedTuple
 2 
 3 
 4 class Valley(NamedTuple):
 5     name: str
 6     age: int
 7 
 8 
 9 if __name__ == '__main__':
10     v = Valley('g', 26)
11     print(v.name)

output:

  g

 

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

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

相关文章

  • 生成器的反向验证

    生成器是一种特殊的迭代器,也可以说其父类型是迭代器   1、迭代器其实也有很多点要清楚,这里先不做赘述   2、要清楚,迭代器调用iter()返回的是自身 1 def func(s, e): 2 “”” 3 生成器函数 4 :param s:起始值 5 :param e: 末值 6 :return: 7 “”” 8 num = s 9 while num &…

    Python开发 2023年4月2日
    00
  • fastapi篇(一)

    fastapi是一个高性能的web开发框架 性能极高,可与 NodeJS, Go 媲美。(得益于Starlette和Pydantic)。 Starlette 是一个轻量级 ASGI 框架/工具包。它非常适合用来构建高性能的 asyncio 服务,并支持 HTTP 和 WebSockets。 官方网址:https://www.starlette.io/   P…

    python 2023年5月9日
    00
  • 工匠回忆(一)

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

    python 2023年5月4日
    00
  • 泛型

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

    Python开发 2023年4月2日
    00
  • pyqt入门

      第一次接触pyqt是在20年刚毕业的时候,时隔两年,恰逢闲暇,正好回过头来对这个模块的知识进行一个整理,不会做系统化的整理,我打算可能会围绕之前做过的小工具对其涉及到的控件、信号和槽等知识进行简单的回忆。后面工作如果再涉及或者想到其他的,会再回来更新完善。   pyqt5:同前面整理的kivy一样,同属于GUI开发框架的范畴,不同的是,pyqt用于桌面应…

    2023年4月2日
    00
  • 派生类中扩展属性

    对于在父类中存在的属性,如果要在其派生类中继续扩展属性   可以这样实现 1 class Valley: 2 def __init__(self): 3 self._name = None 4 5 @property 6 def name(self): 7 return self._name 8 9 @name.setter 10 def name(self…

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

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

    Python开发 2023年4月2日
    00
  • __call__用法简谈

      python一切皆对象,从是否可调用层面讲,对象又可以分为可调用对象、不可调用对象 在本篇中,类中实现__call__双下方法,即将该类的实例变为可调用对象   普通类未实现__call__的方法,实例是不可调用的,先看 1 class Valley: 2 … 3 4 5 if __name__ == ‘__main__’: 6 v = Valley…

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