python类的多态、多态性
多态:多态指的是一类事物有多种形态
多态性:
class Animal:
def run(self):
raise AtrributeError("子类必须实现这种方法")
class Person(Animal):
pass
p = Person()
p.run()
通过父类主动抛出一个异常,告诉你子类中必须自己要写这个方法
改子类如下
class Person(Animal):
def run(self):
print("人跑")
再定义几个子类
def Dog(Animal):
def run(self):
print("狗跑")
def Pig(Animal):
def run(self):
print("猪跑")
person = Person()
dog = Dog()
pig = Pig()
person.run()
dog.run()
pig.run()
上面这就是多态,同属一个父类,但是他们在run这个方法上表现出不能的形态,这就是多态。
那什么是多态性呢?
还是举电脑组装的例子
电脑主机生产商定义了电脑这个类
class Computer():
def usb_run(self):
raise AtrributeError("USB设备自己要开发run方法")
def usb_insert(obj):
obj.run()
class KeyBoard(Computer):
def usb_run(self):
print("键盘插入了")
class Mouse(Computer):
def usb_run(self):
print("鼠标插入了")
k = KeyBoard()
m = Mouse()
usb_insert(k)
usb_insert(m)
简单理解就是定义了一个函数,函数里执行了多态的共同方法,
但是并不区分是哪个对象传送过来的,具体对象需要通过向函数传递参数实现,这种实现方法就是多态性。
python类的多态、多态性的更多相关文章
- python类的多态
1. 什么是多态 多态指的是同一种/类事物的不同形态 2. 为何要用多态 多态性:在多态的背景下,可以在不用考虑对象具体类型的前提下而直接使用对象 多态性的精髓:统一 ...
- Python 类的多态的运用
#类的多态的运用 #汽车类 class Car(object): def move(self): print("move ...") #汽车商店类 class CarStore(o ...
- Python类的多态的例子
1 # -*- coding: utf-8 -*- 2 # 类的多态 3 4 # 定义Person父类 5 class Person(object): 6 def __init__(self, nam ...
- Python类总结-多态及鸭子类型
Python天生支持多态. 什么是多态: 一类事务的多种形态. 多态的一个例子 class Alipay(): def pay(self,money): print('用支付宝支付了%s元' % mo ...
- Python 类的多态
#python的多态 class Dog(): def eat(self): print("i am dog , eat something . ") class Cat(): d ...
- Python类(四)-多态
多态即一个接口,多种实现 按照平常直接调用 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" class Person(obje ...
- Python之路【第十篇】:Python面向对象之多态、多态性
阅读目录 一 多态 多态指的是一类事物有多种形态 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @ab ...
- python中对多态和多态性的理解
python中对多态的理解 一.多态 多态是指一类事物有多种形态,比如动物类,可以有猫,狗,猪等等.(一个抽象类有多个子类,因而多态的概念依赖于继承) import abc class Animal( ...
- day21-5 类的多态与多态性
类的多态与多态性 多态 多态指的是一类事物有多种形态,如动物有多种形态:人.狗.猪 import abc class Animal(metaclass=abc.ABCMeta): # 同一类事物:动物 ...
随机推荐
- oracle-function-into时为null报错
oracle-function-into时为null报错 create or replace function P_ADD_CUSTOMER_FOR_CSS_heyt_test(i_cust_name ...
- 考研路茫茫——空调教室HDU2242(Tarjan缩点)
题意:http://acm.hdu.edu.cn/showproblem.php?pid=2242 给你一个图,问你缩完点树上割边的做小绝对值差. 思路: 这题核算起来整整做了我一天(即24个小时)! ...
- 怎样使用yum安装nginx
yum install -y nginx 以上.
- 轻松搭建CAS 5.x系列(3)-连接数据库,使用数据库表中的帐号做登录
概要说明 前面的CAS SEVER中的登录帐号名是配置中写死的,实际情况中不太可能用这些方法.通常情况下,数据库的帐号名密码都是在数据库表中的,这样可以对登录帐号进行增删改的处理. 如果您对搭建固定帐 ...
- 服务器爆满:cannot create temp file for here-document: No space left on device
1 概述 服务器的磁盘空间被占满导致TAB补全指令失效(TAB会创建临时文件) cannot create temp file for here-document: No space left on ...
- div可以同时设置背景图片和背景颜色吗?
前言 当然可以同时设置 当图片背景色不透明时 情况一:当图片的长.宽 >= div的长.宽时 我们最终看到div背景是图片,之所以说是最终看到,是因为在页面加载时,我们先看到的div背景是颜色, ...
- Shiro——入门Demo
Shiro——入门Demo 环境- 引入相关maven依赖, shiro-core,commons-logging 配置shiro配置文件:ini后缀 主方法测试: import org.apach ...
- JavaScript Basics_Fundamentals Part 1_Variables
JavaScript Variables JavaScript 变量(Variables)是用于存储数据值的容器. 创建一个 JavaScript 变量,可以使用关键字 let. Example le ...
- 使用LEANGOO泳道
转自:https://www.leangoo.com/leangoo_guide/leangoo_yongdao.html 列表使用纵向的纬度管理卡片,通常代表卡片的工作的不同阶段,或者任务的状态.泳 ...
- SpringBoot定时任务(schedule、quartz)
Scheduled 只适合处理简单的计划任务,不能处理分布式计划任务.优势:是spring框架提供的计划任务,开发简单,执行效率比较高.且在计划任务数量太多的时候,可能出现阻塞,崩溃,延迟启动等问题. ...