12、python的多态
我们继续回顾一下前面的封装和继承,何为封装何为继承?
1、封装:python _ _对类中的的变量也就是属性进行私有,目的是,不能够直接访问到类中的属性he变量的值,因为这样会造成数据的不安全;我们可以通过方法去间接访问类中的私有属性,以提高数据访问的安全性。那么为什么通过方法间接的访问就能够增强数据访问的安全性呢?因为我们可以在方法中设置用户访问的控制点,而且我们可以在方法的内部对修改的数据进行安全的控制。
2、继承:父类将子类中共有的方法和属性抽取到父类中,让各个子类去继承,减少和解决了子类中属性和方法的冗余重复,属于方法的和属性的抽取
装饰器:装饰器是对继承的有效的补充,继承是整个方法的抽取,而装饰器是实现方法内部业务控制和业务实现的分离(将业务控制代码抽取出来),减少方法内部业务控制代码的冗余。 总结:继承和装饰器的目的其实都是为了代码的简洁性,减少代码的冗余。
3、多态:简单来说就是同一个方法名,不同的效果。
说到Python的多态,那么让我们回想一下Java的多态,Java中有抽象类和接口去增强多态。为什么说前面句话呢?因为Java中的抽象类和接口都不能实例化,是通过子类对象完成实例化的,子类对象决定多态调用哪个同名方法。
而python中为了增强多态,他设计了抽象类和方法,abc模块为了增强多态。
抽象类中的抽象方法,在子类中必须重写,否则报错。
Python类变量中有类方法和静态方法
那么类方法、静态方法、实例方法都有神马区别呢?
实例函数中是self.schoolName=sname self当前实例对象