命名元组

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日

相关文章

  • 面向对象之多态

    鸭子类型   我们都知道面向对象的语言有三大特性:封装、继承和多态,在这里我浅谈一下python的多态 1 class PageOne: 2 def status(self): 3 return “按期申报页” 4 5 6 class PageTwo: 7 def status(self): 8 return “其他申报页” 9 10 11 class Pa…

    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 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
  • 循环优化一

    主角:takewhile   判断序列中元素是否为偶数,奇数则终止 这是我们最常用的一种方式,其实没必要这么复杂 1 a = [4, 6, 7, 3] 2 3 4 def judge_is_even(item): 5 if item % 2 == 0: 6 return True 7 return False 8 9 10 # 最常用 11 for item…

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

    接上文 7、函数   7.1、长度   7.2、圈复杂度   7.3、函数内代码确保处在同一抽象层内,主流程清晰,不存在穿插的分支   7.4、有状态的函数     7.4.1、全局变量     7.4.2、闭包函数     7.4.3、类     比较偏向于后两者   8、装饰器   装饰器和装饰器模式是两个完全不同的概念   1、三方模块wrapt的引入…

    python 2023年5月6日
    00
  • 代码坏味道(一)

    1、神秘命名   模块、类、函数、变量等的命名是编程中最难的两件事之一,正因为如此,改名可能是最常用的重构手法   对应的重构手法有:改变函数声明、变量改名、字段改名 2、重复代码   顾名思义,就是在多处看到相同的代码结构   对应的重构手法有:移动语句、提炼函数 3、过长的函数   确保函数内代码处在同一层抽象级,无须担心进程内的函数开销,提倡小函数 4…

    Python开发 2023年3月31日
    00
  • 在*args, **kwargs上强制规定参数的调用约定

      首先我们要知道任何关于函数调用签名的问题,都和inspect模块有着关系   这个知识点涉及到两个类:               Signature、               Parameter创建一个签名对象,这是个重点 1 from inspect import Signature, Parameter 2 3 params = [Parame…

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