我需要向api发送消息。有两种不同类型的消息:创建或更新。创建消息将在数据库中创建一个条目。更新消息将更新数据库中的条目。
下面是我用来实现这些类的代码:from abc import ABCMeta, abstractmethod
from dataclasses import asdict, dataclass
@dataclass
class Message(metaclass=ABCMeta):
message_type: str
def to_dict(self) -> dict:
return asdict(self)
@dataclass
class CreateMessage(Message):
message_id: str
message_status: str
@dataclass
class UpdateMessage(Message):
message_id: str
new_message_status: str
然而,我的同事说这些类的名字听起来更像一个函数。你们有什么建议吗我可以给UpdateMessage和CreateMessage类起个名字让它们不那么混乱?他建议UpdateMessageDto和CreateMessageDto,但我担心其他人不知道Dto是什么。
我同意CreateMessage
,例如,它似乎将作为一个函数执行。如果可能的话,我建议确保名称使用名词,因为类通常是包含数据的对象,这使得它们与通常与动词相关联的函数明显不同,例如create_message
。
我建议在模型类名称上添加Action
之类的东西。另一种选择是更明确地添加一个名词,如Model
。如果你发现包含"Message"变得有点多余,我还建议删除类的Message
部分,例如让它像CreateModel
一样,然后你可以把它放在一个叫做messages.py
的模块中,这样from messages import CreateModel
就会清楚地表明CreateModel
是一个消息模型类。
from __future__ import annotations
from abc import ABCMeta
from dataclasses import asdict, dataclass
from typing import Any
@dataclass
class Message(ABCMeta):
message_type: str
def to_dict(self) -> dict[str, Any]:
return asdict(self)
@dataclass
class CreateModel(Message):
message_id: str
message_status: str
@dataclass
class UpdateModel(Message):
message_id: str
new_message_status: str