多态
# python是一门动态强类型的语言 # 多态:同一个东西,有多种表现形式 # 在python中,天生支持多态,所以python没有实现多态的一种机制 # 因为python是一门动态强类型的语言,所以可以进行多态,不同对象可以被参数识别,不用借助父类就可以展现不同形式 class Wechat(): def pay(self, money): print('已经使用微信支付了%s元' % money) class Alipay(): def pay(self, money): print('已经使用支付宝支付了%s元' % money) def pay(pay_obj, money): # 这个函数,传进来wechat对象和alipay对象都可以调用pay,并且表现的形式不一样,这就是多态 pay_obj.pay(money) # 在其他强类型语言中,实现多态的效果,需要有个中间的爸爸类来做到多态的柑橘,他们叫多态 # 鸭子类型 多态的感觉在python中使用用鸭子类型就可以达到效果,因为python是一种动态强类型的语言 # 不崇尚根据继承所得来的相似 # 而是我只是自己实现我自己的代码就可以了,如果两个类刚好相似,并不产生父类的子类的兄弟关系,而是鸭子类型 # 比如list和tuple类,其中其实有很多方法都相似,但是python却将这两个类都继承了object,并没有继承自一个共有的方法的类 # 优点:松耦合(各个东西的关联性不强,删除一个东西不影响其他的,每个相似的类之间都没有互相影响),高内聚 # 缺点:太随意了,只能靠自觉 # 鸭子类型进一步说明 下面的 len函数传进去一个list对象后,就调用的list类中的len,len函数传进去一个Tuple对象后,就调用的Tuple类中的len,List和Tuple就是鸭子类型 class List: def __len__(self):pass class Tuple: def __len__(self):pass def len(l_t): return l_t.__len__() l = list() len(l) # 其实接口类与抽象类在python当中的应用点并不是非常必要 # 在python中不崇尚根据继承来实现两个类相似的部分