簡體   English   中英

如何將屬性傳遞給自定義數據類

[英]How to pass Attributes to Custom Dataclass

我目前正在嘗試在 python 中實現一個自寫的 Dataclass 包裝器/裝飾器。 我在傳遞 arguments 和 function 的屬性時遇到了很大的麻煩,我想在上面使用該裝飾器。

直到現在我的思考過程:裝飾器不知道 class 有多少屬性和參數,但我仍然必須訪問它們。 然后我將不得不通過“屬性”名稱訪問那些。 由於 dataclass 裝飾器主要執行init的操作(以及可選的eq等),因此我必須通過 classes/instances dict來訪問所有 args。 我已經嘗試在數據 Model 的 Pythons Language 參考中自己找到它,但我找不到它。

我將不勝感激任何形式的幫助,無論是我在文檔中找到答案的地方、某種提示還是一些代碼片段。

在為dataclass創建默認的__init__實例方法時,數據類裝飾器基本上執行兩個步驟:

  1. 它使用 class 的__annotations__ (參見PEP 526 )屬性提取所有 class 變量,如 dataclass 的文檔字符串中所述。

  2. 它創建一個包含整個 function 定義的string ,以及完整的參數列表,該列表由步驟 1 的 class 變量生成,如果存在它們的默認值。 然后它使用exec將其實際運行為 python 代碼,進而生成一個新的user-defined function object 新的 object 最終分配給修飾的class object__init__屬性。

所以要修改新創建的__init__ function的參數列表以匹配class變量, dataclass創建一個新的function定義。 似乎沒有直接的方法來修改 function 定義本身之外的 function object 的參數列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM