一、多态
多态是指:一类事物的多种形态,,(一个抽象类有多个子类,因而多态的概念依赖于继承)
1.1 多态的特征
序列数据类型有多种形态:字符串,列表,元组
动物有多种形态:人,狗,猪
多态可以具有约束性(一般情况都有约束性,在其他语言中约束性很强)
法1
class Animal:
def speak(self):
pass
class Pig(Animal):
def speak(self):
print(“哼哼哼”)
class Dog(Animal):
def speak(self):
print(“汪汪汪”)
class People(Animal):
def speak(self):
print(“say hello”)
法2
#用abc实现接口的统一化,约束代码(用的比较少)
import abc
#1 在父类括号内中写metaclass=abc.ABCMeta
class Animal(metaclass=abc.ABCMeta):
#2第二在要约束的方法上,写@abc.abstractmethod
@abc.abstractmethod
def speak(self):
pass
class Pig(Animal):
# def aaa(self):
# print(‘哈哈哈’)
# 如果子类中没有speak方法,就会报错
def speak(self):
print(‘哼哼哼’)
pig = Pig()
法三
#用异常处理来实现
class Animal():
def speak(self):
# 主动抛出异常
raise Exception(‘必须要重写哦’)
class Pig(Animal):
#如果没有会报错
def speak(self):
print(‘哼哼哼’)
pig = Pig()
鸭子类:只要走路像鸭子(对象中有某个绑定方法),那你就是鸭子
class Pig:
def speak(self):
print(‘哼哼哼’)
class People:
def speak(self):
print(‘哈哈哈’)
pig = Pig()
people = People()
def animal_speak(obj):
obj.speak()
animal_speak(pig)
animal_speak(people)
二、多态性
多态性是指:具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。在面向对象方法中一般是这样表述多态性:向不同的对象发送同一条消息,不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。
多态性:多种形态的不同体现
多态性依赖于:继承
多态性:定义统一的接口
class Animal:
def speak(self):
pass
class Pig(Animal):
def speak(self):
print(“哼哼哼”)
class Dog(Animal):
def speak(self):
print(“汪汪汪”)
class People(Animal):
def speak(self):
print(“say hello”)
pig = Pig()
dog = Dog()
people = People()
def animal_speak(obj):
obj.speak()
animal_speak(pig)
animal_speak(dog)
animal_speak(people)
哼哼哼
汪汪汪
say hello
2.1 多态性的优点
增加了程序的灵活性:以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal)
增加了程序额可扩展性:通过继承Animal类创建了一个新的类,使用者无需更改自己的代码,还是用func(animal)去调用
三 linux中的多态与多态性
传统的写法
class File:
def read(self):
pass
def write(self):
pass
#内存类
class Memory(File):
def read(self):
print(“Memory…read”)
def write(self):
print(‘Memory…write’)
鸭子类型的写法
class Memory:
def read(self):
print(“Memory…read”)
def write(self):
print(‘Memory…write’)
class Network:
def read(self):
print(“Memory…read”)
def write(self):
print(‘Memory…write’)
四、小结
多态:同一种事物的多种形态,动物分为人类,猪类(在定义角度) 多态性:一种调用方式,不同的执行效果(多态性)