Python3.7新功能预览:数据类装饰器支持与字符集升级

Python Tribe(Python.freelycode.com)组织翻译,禁止重印,并欢迎转发。

Python3.7新功能预览:数据类装饰器支持与字符集升级

Python 3.7有望在今年夏天发布,所以让我们看看它带来的新功能!如果您经常使用Pycharm单独在家编辑代码,请确保将Pycharm升级到2018.1版。 (在阅读本文后仍然是时候升级了)。

Python 3.7版本包含许多新功能:例如升级各种字符集,推迟评论评估等。最期待的新功能是对数据类装饰器的支持。

什么是数据类

大多数Python开发人员都写了许多课程,例如下图。

数据类可以为您定义的实例自动生成“魔术”方法。例如:__init__可以接收参数并将参数分配给自我。上图中的小例子也可以像这样写:

关键区别在于,数据类实际需要类型提示。如果您以前从未使用过类型提示:类型提示允许您标记代码中的某些变量的数据类型。在运行时,将不会检查变量的数据类型,但是您可以使用Pycharm或命令行工具(例如Mypy)来静态检查您的代码。

因此,让我们看看如何使用此新功能。

星球大战API

您必须知道,当电影迷使用您喜欢的电影中的数据创建一组REST API时,这将使这部电影的粉丝群体热情地做出回应。这就是《星球大战》粉丝创造的星球大战API所做的。实际上,他为此API做了更完美,直接创建了一个Python库。

让我们暂时忘记这个包装库的存在,并探索如何创建自己的图书馆。

我们可以使用请求库从星球大战API获取资源。

该终端(与所有终端一样)以JSON格式的信息做出响应。请求库还提供JSON解析。

目前,我们将数据存储到字典中,让我们看看。

封装此API

为了正确封装此API,我们应该创建一个对象,用户可以在自己的应用程序中使用该对象。因此,让我们使用Python 3.6定义一个对象,以存储对 /胶片 /终端请求的响应。

仔细的读者可能已经注意到上述代码具有一定的冗余。不太小心的读者可以参考完整的Python 3.6实现(这并不短)。

这是一个经典的情况,数据类装饰器可以帮助您摆脱麻烦。我们创建了一个拥有数据并仅执行少量验证的类。让我们看一下需要修改的内容。

首先,数据类自动生成一些魔术方法。如果我们没有为数据类装饰器指定任何选项,则自动生成的魔术方法为:__init__,__eq__和__repr__。如果定义__repr__,而不是__str__,则Python默认情况下将实现__str_________________________________________________。此外,您只需要修改代码,如下图所示,您将获得四种魔术方法:

在这里,我们删除了__init__方法,以确保数据类装饰器可以添加其子集。不幸的是,在此步骤中,我们缺少一个功能。我们的Python 3.6构造函数不仅定义了所有值,而且还应尝试解析数据。我们应该如何使用数据类实现此功能?

如果我们重写__init__方法,那么我们将失去使用数据类的好处。因此,为了实现这些额外的处理,新的魔法方法__post_init__诞生了。让我们看一下我们要封装的对象中此方法的样子:

任务完成了。在数据类装饰器的帮助下,我们仅使用原始代码数的1/3实施了类。

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

31阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

27阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读