通过调用 super class python 创建 sub class

Create sub class by calling super class python

我有一个项目,我们正在尝试为多个 python GIS 库创建一个更简单的界面。基于我们想要的设计模式,我们希望用户只使用 use/reference superclass 方法而不知道 subclasses.

的内部工作原理

基于传递给 superclass' 构造函数的文件路径扩展,是否可以创建一个 subclass,然后通过 sub 处理用户对 super 方法的调用class?

换句话说,如果用户想制作汽车并与之互动,他们可以给汽车 class 法拉利的蓝图并让汽车 "superclass" 参考 Ferarri "subclass" 方法?

这在设计原则上似乎有点落后。

听起来很像你想要工厂模式:

In object-oriented programming (OOP), a factory is an object for creating other objects – formally a factory is a function or method that returns objects of a varying prototype or class.

但是您不应该将功能放在 Car 的构造函数中。在您的情况下 Car 只是多种不同汽车的通用接口。因此,接口不应该知道任何关于实现的信息,包括你的子类的名称。

使用实例化对象的简单函数会更好:

class Car(object):
    pass
class Ferrari(Car):
    pass
class Volkswagen(Car):
    pass
def car_factory(blueprint, *args, **kwargs):
    if blueprint == "Ferrari":
        return Ferrari(*args, **kwargs)
    if blueprint == "Volkswagen":
        return Volkswagen(*args, **kwargs)

或者干脆

def car_factory(blueprint, *args, **kwargs):
    cars = {"Ferrari":Ferrari,
            "Volkswagen":Volkswagen}
    return cars[blueprint](*args, **kwargs)