Python 通用可选参数
Posted
技术标签:
【中文标题】Python 通用可选参数【英文标题】:Python Generic optional param 【发布时间】:2021-12-03 10:25:33 【问题描述】:我有class CRUDBase
(和tiangolo example完全一样)和很多继承了这个基类的类。
我想为这个类添加可选模式:(这个选项不起作用)
class CRUDBase(Generic[ModelType, CreateSchemaType, UpdateSchemaType, Optional[ValidateSchemaType]=None]):
做这样的功能:
def validate(self, db_obj):
if ValidateSchemaType is None:
raise NotImplementedError
try:
ValidateSchemaType.from_orm(db_obj)
except ValidationError as e:
return translate_error(e)
return
你有什么想法吗?
【问题讨论】:
我认为你应该使用type variables 和Generic。我不清楚你想做什么。 【参考方案1】:您正在尝试将工作与模型和验证相结合。我认为这不是一个好主意。你应该像这样向你的 Pydantic 模式添加验证
from datetime import datetime
from typing import List, Optional
from pydantic import BaseModel
class BaseValidator(BaseModel):
def validate_db_object(self, db_obj):
return self.validate(db_obj)
class User(BaseValidator):
id: int
name = 'John Doe'
signup_ts: Optional[datetime] = None
friends: List[int] = []
if __name__ == '__main__':
a = User(id=1, name='Egor')
a.validate_db_object(db_obj='id': 5)
【讨论】:
以上是关于Python 通用可选参数的主要内容,如果未能解决你的问题,请参考以下文章