我是靠谱客的博主 想人陪路人,最近开发中收集的这篇文章主要介绍Python高阶专题:鸭子类型与多态,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. 鸭子类型

鸭子类型是动态语言的一种风格,Python作为一门动态语言也继承了这种风格,关于鸭子类型官方的解释:“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子”,这种解释对于没有深入了解动态语言的程序员来说可能有些牵强,要了解鸭子类型,首先就要了解面向对象编程思想种一种非常重要的思想——多态

2. 多态

面向对象编程的编程思想精髓:封装,继承,多态,对于封装以及继承在这里不做解释,这里以Java为例简单解释一下多态,在Java中是无法实现多继承,但是如果像实现多态就要使用到接口这个概念,不做过多解释。
在这里插入图片描述
在Python中一切皆对象的思想刻入了Python设计的设计理念中,Python中的对象可以作为值传递,返回,所以可以通过这种理念实现多态,鸭子类型就是多态的一种实现

class PagHandler() :
	def Shotter() :
		pass
class DogHandler() :
	def Shotter() :
		pass
class CatHandler() :
	def Shotter() :
		pass
AnimalSequence = [PagHandler,DogHandler,CatHandler]
for Animal in AnimalSequence :
	Animal().Shotter()
3. 鸭子类型通俗解释

子类对象不由其所继承的父类决定,而是由子类的方法决定Python中的魔法函数就是鸭子类型的范例,比如我们实现一个序列类,我们不用继承实现序列的父类对象,而直接实现__getitem__方法即可。

class SequenceHandler :
    def __init__(self,sequence):
        self._sequence = sequence
    def __getitem__(self, item):
        return self._sequence[item]
class PagHandler :
	def Shotter() :
		return "I am a Pag"
class DogHandler:
	def Shotter() :
		return "I am a Dog"

class CatHandler:
	def Shotter() :
		return "I am an Human"
#对于CatHandler这个类,实例化之后调用类Shotter方法,并打印出了" I am an Human" 可以理解为Human 而不是 Cat

最后

以上就是想人陪路人为你收集整理的Python高阶专题:鸭子类型与多态的全部内容,希望文章能够帮你解决Python高阶专题:鸭子类型与多态所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部