使用模型 (Model)

从原理上来说, Dispatchable 可以描述 任何 包含一 Dispatcher 类属性的类声明, 这意味着我们能配合 pydantic, dataclass 之类的方便事件实例的构建.

在实际实现中, 我们只需要简单的继承 Dispatchable, 如果是 pydantic 就再继承 BaseModel, 如果是 dataclass 就直接 @dataclass, 我们的 Dispatchable 只在乎它有没有声明 Dispatchable, 所以这种做法是被允许的.

class TestEvent1(Dispatchable, BaseModel):
    a: int
    b: str

    class Dispatcher(BaseDispatcher):
        ...

@dataclass
class TestEvent2(Dispatchable):
    a: int

    class Dispatcher(BaseDispatcher):
        ...

broadcast.postEvent(TestEvent1(a=1,b="2"))
broadcast.postEvent(TestEvent2(1))