Python 如何将属性传递给自定义数据类

Python 如何将属性传递给自定义数据类,python,customization,decorator,class-attributes,Python,Customization,Decorator,Class Attributes,我目前正在尝试用python实现一个自写的数据类包装器/装饰器。 我在传递函数的参数和属性时遇到了很大的困难,我想在这个函数上使用这个修饰符 我至今的思考过程: decorator不知道这个类有多少个属性和参数,但我还是要访问它们。然后,我必须通过“属性”名称访问这些属性。由于数据类装饰器主要执行init所做的操作(以及可选的eq等),因此我必须传递类/实例dict,以访问所有参数。我已经尝试在数据模型中的Pythons语言引用中找到它,但是我找不到它 我希望能得到任何帮助,无论是在文档中找到答

我目前正在尝试用python实现一个自写的数据类包装器/装饰器。 我在传递函数的参数和属性时遇到了很大的困难,我想在这个函数上使用这个修饰符

我至今的思考过程: decorator不知道这个类有多少个属性和参数,但我还是要访问它们。然后,我必须通过“属性”名称访问这些属性。由于数据类装饰器主要执行init所做的操作(以及可选的eq等),因此我必须传递类/实例dict,以访问所有参数。我已经尝试在数据模型中的Pythons语言引用中找到它,但是我找不到它


我希望能得到任何帮助,无论是在文档中找到答案,还是一些技巧或是一些代码片段。

在为一个类创建默认的
\uuuu init\uuuu
实例方法时,
数据类
装饰器基本上执行两个步骤:

  • 它使用类的
    \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu注释(请参阅)属性提取所有类变量,如中所述

  • 它创建一个
    字符串
    ,其中包含完整的函数定义和完整的参数列表,该列表由步骤1中的类变量生成,如果存在默认值。然后,它将使用以python代码的形式实际运行该函数,从而生成一个新的
    用户定义函数对象
    。该新对象最终被指定给修饰的
    类对象的
    \uuu init\uuu
    属性


  • 因此,要修改新创建的
    \uuuu init\uuu
    函数的参数列表以匹配类变量,
    dataclass
    创建一个新的函数定义。除了函数定义本身之外,似乎没有直接的方法来修改函数对象的参数列表。

    我自己不知道如何解释它,但这个网站在我自学的过程中帮了我很多忙:我不确定我是否理解你的要求,但是您可以阅读标准库的
    dataclasses
    模块的源代码。也许这会有帮助?谢谢:)我想实现我自己的init方法,pythons数据类包含1000行代码。我还远远不能写那个。所以我只想写一个装饰器,它可以完成init在pythons类中所做的工作。谢谢,我现在就知道了。你救了我一天。