面向对象三大特性之多态与多态性

一、多态

'''
多态:
    同一事物的多种形态
'''


# 文件的多种形态:

class File:
    def click(self):
        pass


class TextFile(File):
    def read(self):
        print('文本文件双击可以查看内容')


class ExeFile(File):
    def exe(self):
        print('可执行文件双击可以执行')


file1 = TextFile()
file2 = ExeFile()

file1.read()
file2.exe()

# 上面的代码,其实子类压根没用到父类的功能,多态应用如下

import abc


class File(metaclass=abc.ABCMeta):  # 同一类事物:文件
    @abc.abstractclassmethod
    def click(self):
        pass


class TextFile(File):
    def read(self):
        print('文本文件双击可以查看内容')


class ExeFile(File):
    def exe(self):
        print('可执行文件双击可以执行')


file1 = TextFile()
file2 = ExeFile()

'''
使用abc模块,指定metaclass=ab.ABCMeta,如果子类没有用到父类的功能则会报错
    TypeError: Can't instantiate abstract class TextFile with abstract methods click
'''

# 修改如下:
import abc


class File(metaclass=abc.ABCMeta):  # 同一类事物:文件
    @abc.abstractclassmethod
    def click(self):
        pass


class TextFile(File):
    def click(self):
        print('文本文件双击可以查看内容')


class ExeFile(File):
    def click(self):
        print('可执行文件双击可以执行')


file1 = TextFile()
file2 = ExeFile()
file1.click()
file2.click()

二、多态性

 

转载于:https://www.cnblogs.com/lichunke/p/9531241.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值