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



我目前正试图在python中实现一个自写的Dataclass包装器/装饰器。我在传递我想在其上使用Decorator的函数的参数和属性时遇到了巨大的困难。

直到现在我的思考过程:decorator不知道这个类有多少属性和参数,但我仍然必须访问它们。然后我将不得不通过">属性";姓名。由于dataclass decorator主要做init所做的事情(以及可选的eq等等(,我必须传递类/实例dict才能访问所有args。我已经试着在数据模型中的Python语言参考中找到了它,但我找不到

我将感谢任何形式的帮助,无论是在文档中找到答案的地方,还是一些提示或一个小代码片段。

dataclass装饰器在为类创建默认的__init__实例方法时基本上执行两个步骤:

  1. 它使用类的__annotations__(参见PEP 526(属性提取所有类变量,如dataclass的docstring中所述。

  2. 它创建了一个包含整个函数定义的string,以及一个完整的参数列表,该列表由步骤1的类变量生成,如果存在它们的默认值。然后,它使用exec将其作为python代码实际运行,从而生成一个新的user-defined function object。该新对象最终被分配给装饰的class object__init__属性。

因此,为了修改新创建的__init__函数的参数列表以匹配类变量,dataclass创建了一个新的函数定义。在函数定义本身之外,似乎没有直接的方法可以修改函数对象的参数列表。

相关内容

  • 没有找到相关文章

最新更新