擅长:python、mysql、java
<p>我认为最优雅的方法是使用<code>._fields</code>的<code>NewsItem</code>:</p>
<pre><code>@classmethod
def from_payload(cls, payload) -> 'NewsItem':
return cls(*(payload[field] for field in cls._fields))
</code></pre>
<p>如果您想保留extra,则需要做一些工作(字段<code>extra</code>声明为<code>extra: dict = {}</code>):</p>
^{pr2}$
<p>你可以进一步优化这一点,用集合计算太多;)</p>
<p>当然,我的解决方案不处理<code>payload</code>不包含{<cd2>}的所有字段的情况</p>