我正在处理的 python 数据类的名称建议?

Name suggestions for a python dataclass I'm working on?

我需要向 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 例如,这似乎可以作为一个函数执行。如果可能的话,我建议确保名称使用名词代替,因为 classes 通常是包含数据的对象,这使得它们明显不同于通常与 动词 [=27] 关联的函数=],例如 create_message.

我建议在模型 class 名称上加上 Action 之类的东西。另一种选择是更明确并添加一个名词,如 Model。如果您发现包含短语“Message”变得有点多余,我还建议删除 class 的 Message 部分,例如将其设为 CreateModel,然后你可以把它放在一个名为 messages.py 的模块中,这样 from messages import CreateModel 就会清楚地表明 CreateModel 是一个消息模型 class.

以下示例说明了我建议的一种可能的命名模式:

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