【Python】面向对象:多态,多态性
发布日期:2021-05-07 23:12:40 浏览次数:26 分类:原创文章

本文共 1541 字,大约阅读时间需要 5 分钟。

1:多态:指的是同一类事物有多种形态
例:动物可存在的形态:人,狗,猪

import abcclass Animal(metaclass=abc.ABCMeta):    all_type="animal"    @abc.abstractmethod    def run(self):        passclass People(Animal):    def run(self):        print('people is running')class Dog(Animal):    def run(self):        print("Dog is running")class  Pig(Animal):    def run(self):        print("Pig is running")

文件可存在的形态:文本文件,可执行文件

import abcclass File(metaclass=abc.ABCMeta):    @abc.abstractmethod    def click(self):        passclass Text(File):    def click(self):        print("open file")class ExeFile(File):        def click(self):            print("execute file")

2:多态性:指的是不考虑对象类型的情况下直接使用对象,例如:人狗猪都属于动物类,都有talk的功能,那我就可以直接调用

"""定义动物类:抽象基类:人狗猪,他们都有父类的功能talk"""import abcclass Animal(metaclass=abc.ABCMeta):    @abc.abstractmethod    def talk(self):        passclass People(Animal):    def talk(self):        print("people is talking!!!!")class Dog(Animal):    def talk(self):        print("Dog is talking!!!!")class Pig(Animal):    def talk(self):        print("Pig is talking!!!!")#多态性:指的是在不考虑对象类型的情况下直接使用对象pig=Pig()dog=Dog()people=People()pig.talk()dog.talk()people.talk()# 也可以定义一个函数直接调用:def func(Animal):    Animal.talk()func(pig)func(dog)func(people)

最后:
Python崇尚鸭子类型,啥是鸭子类型,也就是:‘如果看起来像、叫声像而且走起路来像鸭子,那么它就是鸭子’
例:

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

在例如:序列类型有多种形态:字符串,列表,元组,但他们直接没有直接的继承关系。但是都可以使用len来统计大小
这就是Python的多态性,Python的鸭子类型

上一篇:【Python】面向对象,封装
下一篇:【Python】面向对象2:之抽象基类:import abc,metaclass=abc.ABCMeta

发表评论

最新留言

不错!
[***.144.177.141]2025年04月11日 01时32分41秒