Можно ли установить значение Pydantic PrivateAttr внутри root_validator?Python

Программы на Python
Ответить
Anonymous
 Можно ли установить значение Pydantic PrivateAttr внутри root_validator?

Сообщение Anonymous »


У меня есть следующий пример, в котором я пытаюсь установить значение PrivateAttr _baz внутри root_validator

из pydantic import BaseModel, root_validator, ValidationError, PrivateAttr Пример класса (BaseModel): фу = 1 бар = 2 _baz = PrivateAttr() @root_validator Защиту Insert_value_for_baz (cls, значения): значения["_baz"] = значения["foo"] + значения["bar"] возвращаемые значения пытаться: пример = Пример( фу=3, бар=4, ) печать(пример._baz) кроме ValidationError как e: распечатать(е) Но я получаю ошибку

AttributeError: объект «Пример» не имеет атрибута «_baz» Я могу подтвердить, что это работает при использовании метода __init__().

из pydantic import BaseModel, root_validator, ValidationError, PrivateAttr Пример класса (BaseModel): фу = 1 бар = 2 _baz = PrivateAttr() def __init__(self, **data): супер().__init__(**данные) self._baz = self.foo + self.bar пытаться: пример = Пример( фу=3, бар=4, ) печать(пример._baz) кроме ValidationError как e: распечатать(е) Но у меня есть вариант использования, когда я хочу установить значение частного атрибута после некоторого кода проверки, поэтому мне имеет смысл сделать это внутри root_validator. Спасибо за любые предложения.

Использование Pydantic v1.10.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»