谁能帮我解决这个错误。我刚刚开始使用数据类,我想设置一个默认值,这样我就可以轻松地从其他函数调用
我有这门课
@dataclass(frozen=True)
class MyClass:
my_list: list = ["list1", "list2", "list3"]
my_list2: list = ["list1", "list2", "list3"]
Run Code Online (Sandbox Code Playgroud)
但是当我打印 print(MyClass.my_list) 时,我收到此错误
raise ValueError(f'mutable default {type(f.default)} for field '
ValueError: mutable default <class 'list'> for field my_list is not allowed: use default_factory
Run Code Online (Sandbox Code Playgroud) 有没有办法在不使用 的情况下使用多个字段别名root_validator?
我当前的代码是这样的:
class GetInfo(BaseModel):
name: str = Field(alias='name1')
name2: str = Field(alias='name2')
@root_validator
def format_name(cls, values):
if values['name'] is None:
if values['name2'] is not None:
values['name'] = values['name2']
return values
return None
Run Code Online (Sandbox Code Playgroud)
该name1字段有时为空,而该name2字段大部分不为空。如果确实为空
,我想使用该值。name2name1
或者你能建议比我更好的方法吗?
我对使用生成器而不是列表感到非常惊讶。但我找不到这个问题的任何解决方案。
从生成器项中获取第一个和最后一个元素的有效方法是什么?因为使用列表我们可以只执行 lst[0] 和 lst[-1]
谢谢您的帮助。我无法提供任何代码,因为很明显这正是我想知道的:)