多态与绑定方法

多态

1.什么是多态

同一种类型的实物,不同的形态(名称相同,实现的功能不同)

2,多态的目的:

在不知道具体类型的情况下,统一对一堆对象的调用方法的规范

如何实现使用方法统一(多态的表现形式)

继承父类:

-耦合度高,扩展性差

直接继承,子类继承时需重名覆盖定义父类的属性或方法

继承抽象类

​ -耦合度极高,扩展性极差 引用abc模块,

父类需要继承metaclass = abc.ABCMeta

父类中,需要装饰@ABC.abstractmethod

从而使子类在继承父类如果不重名覆盖定义就会报错,

在父类里边进行装饰的方法或属性必须被重名覆盖,不然会报错

鸭子类型

-耦合度低,扩展性强

不需要模块限制,不需要父类继承,

但是在定义的时候都按照统一的规范去编写

绑定方法与非绑定方法:

绑定方法:

绑定给谁,就应该由谁来调用,谁来调用都将谁当做第一个参数传入

1,绑定给对象的方法,类中定义得风寒束默认就是绑定给对象的

2,绑定给累的方法,为类中的定义的函数加上一个装饰classmethod

非绑定方法:

即不与类绑定,也不与对象绑定,意味着对象和类都是可以调用的,无论谁来调用都是一个普通的函数吗,

没有自动传值的效果方式是 @staticmethod

注意:使用绑定(绑定对象或类)是由函数内部需要参数来源决定的,如果函数并不需要参数,就可以采用非绑定方法

isinstance :判断一个对象是否是另一个类的实例

issubclass:判断一个类是否是另一个类的子类

反射:

指的是通过字符串对对象的属性或方法进行操作

hasattr:通过“字符串”判断对象的属性或方法是否存在

getatter :通过“字符串”获取对象的属性或方法

setatter :通过“字符串”设置对象的属性或方法

delattr: 通过 “字符串” 删除对象的属性或方法

原文地址:https://www.cnblogs.com/fxsm/p/11953233.html