相关疑难解决方法(0)

为什么数据类的类属性声明中不能具有可变的默认值?

似乎喜欢的事,很可能已被问过,但搜索的一个小时左右的时间没有结果。将默认列表参数传递给数据类看起来很有希望,但这并不是我想要的。

这是问题所在:当尝试将可变值分配给class属性时,会出现错误:

@dataclass
class Foo:
    bar: list = []

# ValueError: mutable default <class 'list'> for field a is not allowed: use default_factory
Run Code Online (Sandbox Code Playgroud)

我从错误消息中收集了应该使用以下内容的信息:

@dataclass
class Foo:
    bar: list = field(default_factory=list)
Run Code Online (Sandbox Code Playgroud)

但是为什么不允许可变的默认值?是否要强制避免可变的默认参数问题

python python-3.x

15
推荐指数
5
解决办法
3165
查看次数

无法在 pydantic init 函数中定义变量

我想定义一个继承自 pydantic BaseModel 的基本模型,如下所示

class BaseDomain(BaseModel):

    def __init__(self, **kwargs):
        self.__exceptions = []

    def add_error(self, exception: GeneralException):
        self.__exceptions.append(exception)

Run Code Online (Sandbox Code Playgroud)

但是当我使用继承自 BaseDomain 的产品模型时出现此错误

ValueError: "Product" object has no field "_BaseDomain__exceptions"
Run Code Online (Sandbox Code Playgroud)

python model python-3.x pydantic

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

python ×2

python-3.x ×2

model ×1

pydantic ×1