Pyhton之接口

如果还不太理解多态的可以看看这个浅谈Python之多态与接口
接口这个概念其实很简单也很复杂,简单在于他的使用,复杂在于他的由来。
如果想知道由来,我们必须先知道抽象类这个概念。
在这里插入图片描述
我们创建一个Car类和一个Truck类,那么他们理所当然都有Run和Stop的方法,否则叫什么车呢?
那么如果是这样,我们加一类车就要重写一次方法,那这个代码要有多丑?
因此我们可以创建一个类,一个什么类?一个他们共同的基类Vehicle,然后在基类中写出一个Stop方法,但是假如Stop方法里面执行的内容不一样怎么办??那你可能会说没关系,分情况嘛,if是万能的。(但是这里其实已经违反了开闭原则,能尽量不动基类的代码就不要去动基类的代码,除非是修Bug或者加入新功能)
没错,if是万能的,但是程序员是懒的。懒人改变世界。因此他们发明了抽象类和纯虚函数。
在这里插入图片描述
所谓的纯虚函数就是不含有方法体的函数,只有一个方法名。
而含有纯虚函数的类就是抽象类。
而含有纯虚函数,而不含有其他函数的抽象类就是所谓接口。

抽象类是 未完全 实现逻辑的类。
接口则是 完全未 实现逻辑的类。

接口一般以大写i 开头。
这样我们的当我们创建一个新类是就可以不再需要去重新写方法,而只需要与那个接口的类遵守同一个协议即可。
这样不仅仅是方便,而且使代码更加具有可读性。

而在python中我们就可以依照这个方法写一个接口函数。

class People():
    def Run(self):
        print('I am walking')

class Dog():
    def Run(self):
        print('I am running')
        
def func(object):
    object.Run()

p_1 = People()
p_2 = People()
d_1 = Dog()

func(p_1)
func(p_2)
func(d_1)

运行一下
在这里插入图片描述
那么这样我们就写了一个函数去调用其他函数,这就是所谓的接口函数,而被调用的函数就是所谓的回调函数。

这样代码是不是看起来要干净整洁得多,甚至不需要因为有一个新类而去写一下新的代码,而是用同一的方法去调用不同的函数。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章