对比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改写为:文章来源:https://www.toymoban.com/news/detail-442077.html
from dataclasses import dataclass
@dataclass
class Token:
a: str
b: int
c: str
d: str
非常简单!!!文章来源地址https://www.toymoban.com/news/detail-442077.html
到了这里,关于python3.7的新特性——dataclass 用来代替输出dict的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!