当前位置: 首页 > 后端技术 > Python

RESTAPI设计理念与PythonMixin模式

时间:2023-03-26 17:01:46 Python

RESTAPI设计理念PythonMixin模式背景民航飞机和直升机既是飞机又是车辆,汽车也是车辆,但不能飞。多重继承是可以的,但这违反了继承必须是“is-a”的关系。java不同语言的实现方法java提供接口接口函数实现多重继承printIn('我在飞');}}publicclassAirplaneextendsVehicleimplementsFlyable{privateflyable;publicAirplane(){flyable=newFlyableImpl();}publicvoidfly(){可飞行。飞();}}现在我们的plane既有vehicle的属性又有aircraft的属性,不需要重写aircraft中的flight方法,也没有打破单继承的原则。飞机是交通工具,能飞是飞机的属性。通过继承接口获取PythonPython语言没有接口函数,但是可以多重继承。Python应该用多重继承来实现吗?是和不是。说是,因为从语法上来说,确实是通过多重继承来实现的。说不是,因为它的继承依然遵循“is-a”关系,在含义上依然遵循单继承原则classVehicle(object):passclassPlaneMixin(object):deffly(self):print('Iamflying')classAirplane(Vehicle,PlaneMixin)pass可以看到上面的Airplane类实现了多重继承,但是它继承的第二个类的名字是PlaneMixin,而不是Plane。这不影响功能,但是会告诉后面看代码的人,这个类是一个Mixin类。所以就意义而言,Airplane只是一种Vehicle,而不是Plane。这个Mixin是mix-in的意思,就是告诉别人这个类是作为一个函数加入到子类中的,而不是作为父类加入的,其作用和Java中的接口是一样的。使用Mixin类实现多重继承要非常小心。首先,它必须代表某个函数,而不是一个项,像Java中的Runnable、Callable等。其次,它必须有单一的职责。如果有多个函数,那么就写多个Mixins,然后不依赖子类的实现。最后,即使子类不继承Mixin类,也能正常工作,只是缺少了一定的功能。(比如飞机还能载人,但是不能飞^_^)}}}varAirplaneComponent=反应。createClass({mixins:[PlaneMixin()],render:function(){return'

什么是mixin

';}})