Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python创建一个类的最佳实践,该类使用相同的基类封装了许多不同类型的类_Python_Python 3.x_Metaclass - Fatal编程技术网

Python创建一个类的最佳实践,该类使用相同的基类封装了许多不同类型的类

Python创建一个类的最佳实践,该类使用相同的基类封装了许多不同类型的类,python,python-3.x,metaclass,Python,Python 3.x,Metaclass,在Python中,创建一个用相同基类封装许多不同类型类的类的最佳实践是什么 在我的特定情况下,我有一个基类(第1层)表示一个通用数据源,还有多个类(第2层)继承自这个基类,表示不同类型的数据源。我想创建一个从第一层或第二层继承的类,并对来自第二层中定义的源之一的数据执行一些任务。我使用的是一个库,因此无法在这两层类之间更改此结构 我考虑的两种方法是: 创建一个元类,我可以在运行时创建一个 从第二层类之一动态继承。这样就可以了 在第二层中自动使用其基类的方法。 尽管我如何防止它创建元类的实例 当我

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

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

我考虑的两种方法是:

  • 创建一个元类,我可以在运行时创建一个 从第二层类之一动态继承。这样就可以了 在第二层中自动使用其基类的方法。 尽管我如何防止它创建元类的实例 当我定义类本身时?我如何使元类 设置类的超类
  • 创建一个从第一层继承的类,该类具有一个成员 变量,它是第二层类的实例。虽然我会 需要为第二层中定义的每个对象创建一个方法 并称之为

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


    当然,如果有很多方法,那么自动路由这些方法可能是相互测试的…

    我想知道您是否希望使用复杂继承来解决它。我宁愿考虑第二层类,并将它们传递给需要特定数据源访问的第一个类的实例。一些代码(请使用有意义的代码,而不是foobar类和方法)可能会有所帮助。