首页 > 解决方案 > 创建一个类的 Python 最佳实践,该类使用相同的基类包装许多不同类型的类

问题描述

在 Python 中创建一个使用相同基类包装许多不同类型的类的类的最佳实践是什么?

在我的具体情况下,我有一个表示通用数据馈送的基类(第 1 层),以及从该基类继承的代表不同类型数据源的多个类(第 2 层)。我想创建一个继承自第 1 层或第 2 层的类,并对来自第 2 层中定义的源之一的数据执行一些任务。我正在使用一个库,因此无法在这两层类之间更改此结构。

我想这样做的两种方法是:

  1. 创建一个 MetaClass,我可以在运行时创建一个类,该类将从第二层类之一动态继承。这样,它将自动在第二层使用其基类的方法。虽然在定义类本身时如何防止它创建 MetaClass 的实例?以及如何让 MetaClass 设置 Class 的超类?
  2. 创建一个从第一层继承的类,具有一个成员变量,它是第二层类的实例。虽然,我需要为第二层中定义的每个方法创建一个方法并调用它。

标签: pythonpython-3.xmetaclass

解决方案


就个人而言,我更喜欢第二种选择。Python 的座右铭是“显式优于隐式”,所以我认为最好手动将对各种方法的调用路由到成员对象的方法上。

当然,如果有很多方法,自动路由方法可能会很有趣......


推荐阅读