当前位置: 首页 > 知识库问答 >
问题:

如何解决 python3.11 dataclass 无法嵌套的问题?

师野
2023-07-04
from dataclasses import dataclass


@dataclass
class Address:
    street: str | None = None
    city: str | None = None
    state: str | None = None


@dataclass
class Person:
    name: str
    age: int
    address: Address = Address()

上面的代码,在 python3.10 下面没有问题

但是在 python3.11 上运行,就会报错

Traceback (most recent call last):
  File "/Users/ponponon/Desktop/code/me/ideaboom/3.py", line 11, in <module>
    @dataclass
     ^^^^^^^^^
  File "/opt/homebrew/Cellar/python@3.11/3.11.4/Frameworks/Python.framework/Versions/3.11/lib/python3.11/dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "/opt/homebrew/Cellar/python@3.11/3.11.4/Frameworks/Python.framework/Versions/3.11/lib/python3.11/dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/python@3.11/3.11.4/Frameworks/Python.framework/Versions/3.11/lib/python3.11/dataclasses.py", line 958, in _process_class
    cls_fields.append(_get_field(cls, name, type, kw_only))
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/python@3.11/3.11.4/Frameworks/Python.framework/Versions/3.11/lib/python3.11/dataclasses.py", line 815, in _get_field
    raise ValueError(f'mutable default {type(f.default)} for field '
ValueError: mutable default <class '__main__.Address'> for field address is not allowed: use default_factory

共有1个答案

仇征
2023-07-04
from dataclasses import dataclass, field


@dataclass
class Address:
    street: str | None = None
    city: str | None = None
    state: str | None = None


@dataclass
class Person:
    name: str
    age: int
    address: Address = field(default_factory=Address)
 类似资料:
  • 这是我在那个盒子里提到的代码。所以请检查这个代码并给我正确的答案。此代码完全在我的系统中运行,运行成功并显示生成成功,但邮件ID中未发送消息。所以请帮帮我。 提前感谢 这是我的密码。

  • 本文向大家介绍Android Fragment多层嵌套重影问题的解决方法,包括了Android Fragment多层嵌套重影问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 1解决bug的思想: //step1:当bug被发现(排除极低偶然性,单次性,开发工具导致) //step2:根据经验判断bug的重现场景,多次测试,直到精准的定位bug //step3:根据重现场景找到对应的代码 //

  • 本文向大家介绍Android 解决ScrollView嵌套CridView显示问题,包括了Android 解决ScrollView嵌套CridView显示问题的使用技巧和注意事项,需要的朋友参考一下 Android 解决ScrollView嵌套CridView显示问题 由于GridView是可滑动的控件,嵌套在ScrollView下时需要重写onMeasure方法。 然后在布局XML文件中引入My

  • 本文向大家介绍Fragment 多层嵌套方法调用问题的解决方案,包括了Fragment 多层嵌套方法调用问题的解决方案的使用技巧和注意事项,需要的朋友参考一下 Fragment的产生与介绍 Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的。难道无法做到一个App可

  • 当我尝试运行应用程序时,它工作正常。但是当我构建签名apk时,出现了错误 失败:构建失败,出现异常。 问题:任务“:app:lintVitalRelease”的执行失败 无法解析配置“:image_picker_android:调试单元测试运行时类路径”的所有项目。无法转换 bcprov-jdk15on-1.68.jar (org.bouncycastle:bcprov-jdk15on:1.68)

  • 本文向大家介绍Android中ScrollView嵌套GridView的解决办法,包括了Android中ScrollView嵌套GridView的解决办法的使用技巧和注意事项,需要的朋友参考一下 前些日子在开发中用到了需要ScrollView嵌套GridView的情况,由于这两款控件都自带滚动条,当他们碰到一起的时候便会出问题,即GridView会显示不全。 找到大家的通用解决办法。记录一下。 解