2024-10-02 22:29:14 发布
网友
下面是我想做的例子
我有不同的双门车、公共汽车、厢式货车,但它们是从“车辆”继承而来的。我想做的是创建一个基类(“Vehicle”),这样每个人都需要遵循。然后人们可以构建自己的插件(例如,总线、货车)
然后其他用户会像这样使用插件
my_vehicle = Vehicle('bus')
然后将使用总线类
我有这个想法,但我不知道应该如何实施
提前谢谢
另一种选择是使用已经存在的插件库,如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的行为来实现的,这样它就可以动态地分派到适当的类
Vehicle
另一种选择是使用已经存在的插件库,如stevedore
这将为您提供:
您可以为此使用元类:
这是通过让类继承进程在元类中注册类,然后重写调用
Vehicle
的行为来实现的,这样它就可以动态地分派到适当的类相关问题 更多 >
编程相关推荐