关于Python和Go重载问题的思考
来源:11-3 为什么说接口是一种抽象类型?

邱晨100
2022-08-07
老师好,我又在复习您的课了。关于Python和Go的重写,我是大致理解了,意思就是说以支付这个接口举例,微信和支付宝分别是对上层接口的实现,这个应该就是Python和Go的重写机制吧?只不过Python不需要显示定义接口(协议)名而已。
可是关于重载,我查资料还有听您也提起过,Python的参数本身就可变,非常灵活。但是这样虽然也是实现了重载,可是那相对Java这种静态语言来说,是不是太将就了一点呢?因为那样还得在一个方法里,通过不同的参数做if-else的判断执行不同的逻辑,会让代码可读性很差啊。
写回答
1回答
-
接口不是重写机制, java中的overwrite才是重写, 接口是实现,和c++中的虚函数一样, python因为有灵活的 kwargs随意你可以随意穿参数进去,不过就是你说的,你的初始化函数中要自己去取出你关心的参数,这样会有一些if 和else不过一个初始化函数不太可能太多,而且你也可以直接使用dict直接映射成参数,灵活度远比java和go好的多,不过问题就是:因为参数名统一是kwargs你就不知道可以传递哪些参数,不像静态语言一样代码即文档,python要通过写注释来告诉调用者,这个不是Python的问题,而是动态语言和静态语言的差异造成的
112022-08-10
相似问题