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

非常简单!!!

你可能感兴趣的:(Python,python,javascript)