如何创建python插件?

2024-10-02 22:29:14 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我想做的例子

我有不同的双门车、公共汽车、厢式货车,但它们是从“车辆”继承而来的。我想做的是创建一个基类(“Vehicle”),这样每个人都需要遵循。然后人们可以构建自己的插件(例如,总线、货车)

然后其他用户会像这样使用插件

my_vehicle = Vehicle('bus')

然后将使用总线类

我有这个想法,但我不知道应该如何实施

提前谢谢


Tags: 用户插件my基类例子总线busvehicle
2条回答

另一种选择是使用已经存在的插件库,如stevedore

这将为您提供:

  • 创建插件的简明方法
  • 动态加载它们的几种方法

您可以为此使用元类:

class VehicleType(type):
    registry = {}

    def __init__(self, name, bases, attrs):
        self.registry[name.lower()] = self

    def __call__(self, name):
        cls = self.registry[name]
        inst = cls.__new__(cls)
        inst.__init__()
        return inst


class Vehicle(object):
    __metaclass__ = VehicleType


class Car(Vehicle):
    pass


car = Vehicle("car")
print(type(car))  # <class '__main__.Car'>

这是通过让类继承进程在元类中注册类,然后重写调用Vehicle的行为来实现的,这样它就可以动态地分派到适当的类

相关问题 更多 >