用保留字“class”定义dataclass的属性并序列化i

2024-10-01 00:31:01 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,我正在尝试定义一个数据类,以便在redis中为sidekiq工作者将一个作业排队,sidekiq负载的规范需要一些具有以下格式的属性:

{
  "class": "SomeWorker",
  "queue": "default"
  "jid": "b4a577edbccf1d805744efa9", // 12-byte random number as 24    char hex string
  "args": [......],
  "created_at": 1234567890,
  "enqueued_at": 1234567890
 }

所以我在python代码中定义了一个数据类:

@dataclass
class PusherNotificationJob:
   args: Any = None
   queue: str = "default"
   jid: str = secrets.token_hex(12)
   retry: bool = True
   created_at: datetime.datetime = time.time()
   enqueued_at: datetime.datetime = time.time()

   def asdict(self):
       return {** self.__dict__, "class": "SomeWorker"}

我的问题是我不能将“class”定义为PusherNotificationJob的属性,因为它是一个保留字。所以我需要定义asdict方法来序列化为dict,并添加我在这里添加的“class”属性。你知道吗

有更好的方法吗?你知道吗


Tags: 数据defaultdatetime属性定义timequeueargs