python namedtuple和dataclass python中的结构体
python namedtuple和dataclass python中的结构体
go里面有结构体,比较方便,python中有什么类似的吗?有namedtuple或dataclass !
在使用namedtuple或dataclass定义类时,您可以为每个字段指定一个默认值。在创建对象时如果没有为该字段提供值,则会使用默认值。
namedtuple
namedtuple是Python标准库中的一种数据类型,它允许您定义一个具有命名字段的元组。这使得您可以像使用对象属性一样访问元组的字段,而不是使用索引。namedtuple是不可变的,也就是说,一旦创建,您就不能修改它的字段的值
对于namedtuple,可以在定义时为每个字段指定默认值,例如:
from collections import namedtuple
# 定义一个namedtuple类型,其中age字段的默认值为0
Person = namedtuple('Person', ['name', 'age', 'gender'], defaults=[None, 0, None])
# 创建一个Person对象,不为age字段指定值
person = Person(name='Alice', gender='female')
# 访问字段
print(person.name)
print(person.age)
print(person.gender)
对于dataclass,可以在字段定义时使用default参数指定默认值,例如:
dataclass
dataclass是Python 3.7版本引入的一种新特性,它允许您使用类似于结构体的语法定义简单的数据类。与namedtuple不同,dataclass是可变的,也就是说,您可以修改它的字段的值
from dataclasses import dataclass
# 定义一个dataclass类型,其中age字段的默认值为0
@dataclass
class Person:
name: str
age: int = 0
gender: str = None
# 创建一个Person对象,不为age字段指定值
person = Person(name='Alice', gender='female')
# 访问字段
print(person.name)
print(person.age)
print(person.gender)
请注意,如果为字段指定了默认值,则在创建对象时可以不为该字段提供值。如果为该字段提供了值,则使用提供的值,否则使用默认值。同时也可以在创建对象时为该字段提供一个None值来覆盖默认值。
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!