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值来覆盖默认值。

posted @   liwenchao1995  阅读(103)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示