命名元组

yizhihongxing

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、重复代码   顾名思义,就是在多处看到相同的代码结构   对应的重构手法有:移动语句、提炼函数 3、过长的函数   确保函数内代码处在同一层抽象级,无须担心进程内的函数开销,提倡小函数 4…

    Python开发 2023年3月31日
    00
  • 猴子补丁

    作用:随时修改代码   (在函数或类定义完成之后,再去修改函数的实现过程) “””类似猴子补丁在函数定义好之后,再去更改他的行为”””import typesclass Valley: def func(self): return “等待宣告”def common(self): return “只有永不遏制的奋斗”if __name__ == ‘__main…

    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
  • 状态机的实现

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

    Python开发 2023年4月2日
    00
  • 钩子函数

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

    Python开发 2023年4月2日
    00
  • 德摩根定律

    命题逻辑里的一个法则   定义:非p或非q=非(p且q)   最近在看一本书啊《python工匠……》一个腾讯大佬写的,从这里面了解到这个东西,确实不错 1 1 # 德摩根定律 2 2 def func(): 3 3 a = 10 4 4 b = 20 5 5 if not a < 5 or not b < 10: 6 6 print(a…

    Python开发 2023年4月2日
    00
  • 面向对象之多态

    鸭子类型   我们都知道面向对象的语言有三大特性:封装、继承和多态,在这里我浅谈一下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
  • 比较赋值、浅拷贝、深拷贝

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

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