from pydantic import BaseModel
class A(BaseModel):
date = ''
class B(A):
person: float
def __init__(self):
self.person = 0
B()
попытался инициировать класс B, но выдал ошибку AttributeError: объект «B» не имеет атрибута «fields_set», почему?
Это потому, что вы переопределяете __init__
и не вызываете super
там, поэтому Pydantic не может творить чудеса с установкой правильных полей.
С pydantic вам редко нужно реализовывать свои __init__
большинство случаев можно решить по-другому:
from pydantic import BaseModel
class A(BaseModel):
date = ""
class B(A):
person: float = 0
B()
Какие дополнительные параметры? Почему бы вам не поставить их ниже параметра person
?
неважно, теперь я понимаю, что вы имеете в виду. Спасибо.
Вы можете использовать корневой валидатор pydantic-docs.helpmanual.io/usage/validators для проверки и изменения значений полей. Что-то вроде постинитов класса данных. Не принимает параметры.
Спасибо! Могу ли я создать новый конструктор, если хочу инициировать класс B с дополнительными параметрами?