Ich habe eine Knacknuss, die ich nicht lösen kann.
Ich habe eine Klasse, bei der ich mit pydantic die Klassenvariabeln validieren will.
Code: Alles auswählen
from pydantic import BaseModel, Field, ValidationError, validator
class ConfigDefaults(BaseModel,
validate_assignment=True,
revalidate_instances='always',
extra='forbid'):
file_base_path: str = os.path.join(
os.path.dirname(
os.path.dirname(
os.path.dirname(
os.path.realpath(__file__)
)
)
), 'log'
)
file_add_timestamp: bool = Field(validate_default=True, default=True)
@validator('file_base_path')
def validate_path(cls, v: str) -> str:
return Path(v)
def __iter__(self):
for item in self.__dict__.items():
yield item
def set_value_by_key(self, key, value):
try:
self.__dict__[key] = value
except ValidationError as e:
print(e)
Nun möchte ich bei einer Instanz dieser Klasse, die Variabeln dynamisch ändern können. Also durch die Angabe der Variabelnamens und des neuen Wertes (siehe Methode: "set_value_by_key").
Den Wert ändern kann ich problemlos, allerdings funktioniert in diesem Fall der Validator nicht. Ich habe diverses ausprobiert aber ich komme nicht darauf wie ich das lösen könnte.
Hat jemand von euch einen Tipp, wie das funktionieren könnte.