簡體   English   中英

dataclasses.asdict()無法正常工作

[英]dataclasses.asdict() not working as expected

我使用的dataclassasdictdataclasses ,我發現asdict不工作,當我介紹繼承我期望的那樣。

我使用dataclasses來幫助我從類中創建字典,以便將它們傳遞給django.shortcuts.render

from dataclasses import dataclass
from dataclasses import asdict

@dataclass
class Base:
    name: str

class Test(Base):
    def __init__(self, age, *args, **kwargs):
        self.age = age
        super(Test, self).__init__(*args, **kwargs)

test = Test(age=20, name="john doe")

print(asdict(test))

我希望輸出是

{"age": 20, "name": "john doe"}

但是我得到的只是基類的關鍵字值

{"name": "john doe"}

docs涵蓋了dataclass繼承的正確實現:

@dataclass
class Base:
    name: str

@dataclass
class Child(Base):
    age: int

沒有這個,子類中的__dataclass_fields__屬性將被asdict用來確定字典中應該包含的內容,而不知道您關心的所有字段。 它只有繼承的版本:

>>> Test.__dataclass_fields__
{'name': Field(...)}
>>> Test.__dataclass_fields__ is Base.__dataclass_fields__
True
>>> Child.__dataclass_fields__
{'name': Field(...), 'age': Field(...)}
>>> Child.__dataclass_fields__ is Base.__dataclass_fields__
False

另請注意,您可以將導入簡化為:

from dataclasses import asdict, dataclass

暫無
暫無

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

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