init
This commit is contained in:
73
mcp/didatodolist-mcp/models/base.py
Normal file
73
mcp/didatodolist-mcp/models/base.py
Normal file
@@ -0,0 +1,73 @@
|
||||
"""
|
||||
基础数据模型
|
||||
"""
|
||||
from typing import Dict, Any, TypeVar, Type, Optional
|
||||
from datetime import datetime
|
||||
import json
|
||||
|
||||
T = TypeVar('T', bound='BaseModel')
|
||||
|
||||
class BaseModel:
|
||||
"""所有数据模型的基类"""
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
"""
|
||||
初始化模型实例
|
||||
|
||||
Args:
|
||||
**kwargs: 模型属性
|
||||
"""
|
||||
for key, value in kwargs.items():
|
||||
setattr(self, key, value)
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls: Type[T], data: Dict[str, Any]) -> T:
|
||||
"""
|
||||
从字典创建模型实例
|
||||
|
||||
Args:
|
||||
data: 数据字典
|
||||
|
||||
Returns:
|
||||
模型实例
|
||||
"""
|
||||
return cls(**data)
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""
|
||||
将模型转换为字典
|
||||
|
||||
Returns:
|
||||
Dict: 模型数据字典
|
||||
"""
|
||||
return {
|
||||
key: value
|
||||
for key, value in self.__dict__.items()
|
||||
if not key.startswith('_')
|
||||
}
|
||||
|
||||
def __str__(self) -> str:
|
||||
"""返回模型的字符串表示"""
|
||||
return json.dumps(self.to_dict(), ensure_ascii=False, indent=2)
|
||||
|
||||
def __repr__(self) -> str:
|
||||
"""返回模型的开发者字符串表示"""
|
||||
return f"{self.__class__.__name__}({self.to_dict()})"
|
||||
|
||||
@staticmethod
|
||||
def _parse_datetime(value: Optional[str]) -> Optional[datetime]:
|
||||
"""
|
||||
解析日期时间字符串
|
||||
|
||||
Args:
|
||||
value: ISO格式的日期时间字符串
|
||||
|
||||
Returns:
|
||||
datetime: 日期时间对象
|
||||
"""
|
||||
if not value:
|
||||
return None
|
||||
try:
|
||||
return datetime.fromisoformat(value.replace('Z', '+00:00'))
|
||||
except ValueError:
|
||||
return None
|
||||
Reference in New Issue
Block a user