Пользовательская инициализация с проверкой дочернего класса pydantic.BaseModel для частных атрибутовPython

Программы на Python
Ответить
Anonymous
 Пользовательская инициализация с проверкой дочернего класса pydantic.BaseModel для частных атрибутов

Сообщение Anonymous »

Я хочу создать класс с собственной функцией __init__, после которой вызывается валидатор. Для этого я попробовал использовать super().__init__(**kwargs), но это не помогает, когда я использую "_" для частных атрибутов.
Вот пример :

Код: Выделить всё

from pydantic import BaseModel, ValidationError, model_validator

c2b = {
"work week": 1,
"weekend": 2,
}

class MyClass(BaseModel):

_a: int
_b: int

@model_validator(mode="after")
def validator(self) -> None:

if self._a  None:

super().__init__(
_a=a,
_b=c2b[c],
)

MyClass(1, "weekend")
Это вызывает ошибку: AttributeError: объект MyClass не имеет атрибута «_a»
Но если я изменю _a на и _b до b все работает нормально. Есть ли способ использовать следующую структуру и сохранить конфиденциальность переменных?

Подробнее здесь: https://stackoverflow.com/questions/779 ... rivate-att
Ответить

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

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

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

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

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