python3.7的新特性——dataclass 用来代替输出dict

对比ts的type结构:

type Token = {
    a: string;
    b: number;
    c: string;
    d: string;
};

格式,我们想在python中实现,在3.7之前需要用一个dict

def create_token(a: str, b: int, c: str, d: str) -> dict:
    return {
        'a': symbol,
        'b': decimals,
        'c': address,
        'd': name,
    }

token = create_token('ok', 18, 'beijing', 'peter')

这样的写法可以,但是不简洁,于是:

Python 3.7版本中引入的一个新特性 dataclasses

它是一个工具,用于自动添加特殊方法到用户定义的类中,如__init__ ,__repr__等方法。这些特殊方法是Python的内置方法,用于实现一些特定的行为。

下面是一个简单的dataclass的例子:

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

在这个例子中,我们定义了一个名为Point的类,它有两个属性:x和y。我们使用@dataclass装饰器装饰这个类,这样Python就会自动为我们生成一些特殊方法,包括:

  • __init__方法,用于初始化新的Point对象。因此,我们可以直接使用Point(1, 2)创建一个新的Point对象,而不需要手动写__init__方法。

  • __repr__方法,用于返回一个字符串,描述这个Point对象。因此,我们可以直接print(Point(1, 2)),它会打印出Point(x=1, y=2)。

  • __eq__方法,用于比较两个Point对象是否相等。因此,我们可以直接使用Point(1, 2) == Point(1, 2),它会返回True。

使用dataclasses可以帮助我们减少样板代码,使得代码更简洁、更易读。

最终我们可以将ts的ype改写为:

from dataclasses import dataclass

@dataclass
class Token:
    a: str
    b: int
    c: str
    d: str

非常简单!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值