我正在处理的 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
我需要向 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