美文网首页
Python 高性能优雅数据类

Python 高性能优雅数据类

作者: Gascognya | 来源:发表于2021-07-31 23:54 被阅读0次
@dataclass
class Point:
    x: int
    y: int
    z: int

这是一个dataclass, 它可以快速定义一个Point(x, y, z)的对象.

class Point:
    def __init__(self, x: int, y: int, z: int):
        self.x = x
        self.y = y
        self.z = z

相比这样一个对象, 必须要承认, dataclass确实很优雅.

那么, dataclass的性能如何?

实际上并不比普通对象高多少, 只能是接近于持平, 有些时候会出乎意料的慢.

但与__ slots __搭配, 性能就很优秀了.

@dataclass
class Point:
    x: int
    y: int
    z: int
    __slots__ = ("x", "y", "z")

哦, 这样好丑, 定义slots是个非常恶心的过程

让我们写个自动添加slots的元类

class AutoSlotsMeta(type):
    def __new__(mcs, *args, **kwargs):
        if args[0] != "AutoSlots":
            args[2]["__slots__"] = tuple([k for k in args[2].get("__annotations__").keys()])
        return super().__new__(mcs, *args, **kwargs)


class AutoSlots(metaclass=AutoSlotsMeta):
    pass

我们直接继承AutoSlots, 就可以自动根据字段添加slots

@dataclass
class Point(AutoSlots):
    x: int
    y: int


@dataclass
class Point2(Point):
    z: int

一个性能不错, 定义清晰的dataclass就完成了

value = Point(10, 20, 30)
match value:
    case Point(x=10 as x, y=20, z=30):
        print(f"point x is {x}")

搭配3.10的match, 会有非常不错的体验

相关文章

  • Python 高性能优雅数据类

    这是一个dataclass, 它可以快速定义一个Point(x, y, z)的对象. 相比这样一个对象, 必须要承...

  • python开发-Django框架使用

    Django框架简介 Django框架是由Python开发的免费的开源网站框架,可用于快速搭建高性能,优雅的网站。...

  • pandas学习 (一) Series和DataFrame简介

    简介 pandas是一个开源的Python库,为Python提供了高性能,易于使用的数据结构和数据分析工具。Ana...

  • Python基础数据处理库NumPy

    NumPy是Python做数据处理的底层库,是高性能科学计算和数据分析的基础,比如著名的Python机器学习库SK...

  • 第一章 走进python

    《用python玩转数据》学习笔记 1 1、python简介 (1)python的特点:优雅、明确、简单;(2)p...

  • django基础

    django介绍 Django 是用python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站...

  • Python3 Django框架

    一、Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的...

  • 花姐的python学习目录

    一,Python基础 1.1 Python学习【第1篇】:Python之数据类型 1.1.1python基本数据类...

  • 想知道Python的 数据驱动编程框架 Da0tabot 是怎么

    前言 Da0tabot是用于 Web 爬虫、ETL、数据管道任务开发的高性能 Python 数据驱动编程框架。 特...

  • 02-Django基本流程

    一、Django简介 Django是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网...

网友评论

      本文标题:Python 高性能优雅数据类

      本文链接:https://www.haomeiwen.com/subject/wctdvltx.html