9223

第十一章、面向对象之多态、多态性

[TOC]

<h1 id="section">第十一章、面向对象之多态、多态性

<h2 id="section-1">一、多态</h2>

多态指的是一类事物有多种形态

动物有多种形态:人、狗、猪

class Animal(): #同一类事物:动物 def talk(self): pass class People(Animal): #动物的形态之一:人 def talk(self): print('say hello') class Dog(Animal): #动物的形态之二:狗 def talk(self): print('say wangwang') class Pig(Animal): #动物的形态之三:猪 def talk(self): print('say aoao')

文件有多种形态:文本文件、可执行文件

class File(): #同一类事物:文件 def click(self): pass class Text(File): #文件的形态之一:文本文件 def click(self): print('open file') class ExeFile(File): #文件的形态之二:可执行文件 def click(self): print('execute file') <h2 id="section-2">二、多态性</h2>

在面向对象方法中一般是这样表示多态性:向不同的对象发送同一条消息(obj.func():是调用了obj的方法func,又称为向obj发送了一条消息func),不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数

def func(obj): obj.talk() ----------------------- pig=Pig() func(pig) ----------------------- #结果是 say aoao <h2 id="section-3">三、为什么要用多态性(多态性的好处)</h2> <ul><li>

增加了程序的灵活性

</li> <li>

增加了程序拓展性

</li> </ul><h2 id="section-4">四、鸭子类型</h2>

**Python崇尚鸭子类型,即‘如果看起来像、叫声像而且走起路来像鸭子,那么它就是鸭子’ **

#二者都像鸭子,二者看起来都像文件,因而就可以当文件一样去用 class TxtFile: def read(self): pass def write(self): pass class DiskFile: def read(self): pass def write(self): pass

来源:博客园

作者:得淼

链接:https://www.cnblogs.com/demiao/p/11424631.html

Recommend