【发布时间】:2020-12-27 16:47:24
【问题描述】:
我想要抽象类 Task 和一些派生类,如 TaskA、TaskB、... 我需要任务中的静态方法来获取所有任务并返回它们的列表。但问题是我必须以不同的方式获取每项任务。我希望 Task 是通用的,因此当我创建新类(例如 TaskC)时,它应该可以在不更改类 Task 的情况下工作。我应该使用哪种设计模式? 假设每个派生任务都有其唯一 id 的装饰器,我正在寻找可以通过 id 查找类并创建它的实例的函数。在python中怎么做?
【问题讨论】:
-
静态方法需要在基类中吗?或者它可以是一个单独的东西?这听起来像是工厂模式。
-
我希望它在基类中。我相信使用反射是可能的。我可以使用 __subclasses__ 获取所有派生类,但我不知道如何检查类是否具有具有特定 id 的装饰器。
标签: python reflection