# -->

'''

多态 与 鸭子类型

--> 什么是多态
对象的多种状态,父类对象的多种 (子类对象) 状态 --> 什么是鸭子类型:
长的像就是
1.规定有什么属性及什么方法的对象叫鸭子类型
2.能提供出规定的属性与方法的对象就是鸭子 函数内有.xxx .yyy方法
传入的对象也必须要有.xxx .yyy才能运行 ''' # -- ( 多态 ) ------------------------------------------------------------------------------------------- import abc
class People(metaclass=abc.ABCMeta):
def __init__(self,name):
self.name = name def eat(self):
print('eat')
@abc.abstractmethod
def speak(self):pass class Chinese(People):
def speak(self):
print('说中国话') class England(People):
def speak(self):
print('说英国话') if __name__ == '__main__': # def ask_someone(obj):
# 多态的体现:功能或是需求,需要父类的对象,可以传入父类对象或任意子类对象
# 一般都是规定需要父类对象,传入子类对象
# 有抽象方法的父类不能被实例化 (假设因为被实例化后,就可以调用自己的抽象方法,没有意义)
def ask_someone(obj):
print('让%s上台演讲'%obj.name) # 父类提供,子类之间继承
obj.speak()
# 父类提供,英国和中国speak内容不同,
# 调用abc模块装饰父类@abc.abstractmethod子类重写 ch = Chinese('王大锤') # ch实例化,用了Chinses类,用继承的父类People中的自定义name,传入'王大锤'
en = England('Tom') ask_someone(ch)
# 调用函数ask_someone(obj) 传入ch的实例化 Chinese('王大锤')
ask_someone(en) # England 类有.name .speak
# ask_someone 方法有.name .speak需求
# 即可直接传入 # -- ( 鸭子类型 ) ------------------------------------------------------------------------------------------- # 长的差不多的类,都具有一样的功能

多态 与 鸭子类型 duck duck duck的更多相关文章

  1. PythonI/O进阶学习笔记_3.1面向对象编程_python的多态和鸭子类型

    前言: 与第一篇的面向对象内容不同的是,第一篇中的面向对象更多的是与类.对象结合起来的概念粗浅理解,就是在编程历史中诞生的一种思想方法. 这篇的面向对象编程,更多落实到在语言设计实现中,是如何体现面向 ...

  2. 第7.3节 Python特色的面向对象设计:协议、多态及鸭子类型

    Python是一种多态语言,其表现特征是:对象方法的调用方只管方法是否可调用,不管对象是什么类型,从而屏蔽不同类型对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化. 一.    P ...

  3. Python面向对象04 /封装、多态、鸭子类型、类的约束、super

    Python面向对象04 /封装.多态.鸭子类型.类的约束.super 目录 Python面向对象04 /封装.多态.鸭子类型.类的约束.super 1. 封装 2. 多态 3. 鸭子类型 4. 类的 ...

  4. python 面向对象专题(四):封装、多态、鸭子类型、类的约束、super

    https://www.cnblogs.com/liubing8/p/11321099.html 目录 Python面向对象04 /封装.多态.鸭子类型.类的约束.super 1. 封装 2. 多态 ...

  5. day25 面向对象之多态和鸭子类型

    1.封装方法 如何封装:给方法名称前面加上双下划线 # ATM 的取款功能 # 1.插入银行卡 2.输入密码 3.选择取款金额 4.取款 class ATM: def __insert_card(se ...

  6. Python多态、鸭子类型

    一.多态 多态指的是一类事物有多种形态. 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.ab ...

  7. 封装之property,多态,鸭子类型,classmethod与staticmethod

    一.封装之Property prooerty是一种特殊的属性,访问时他会执行一段功能(函数)然后返回 '''BMI指数(bmi是计算而来的,但很明显它听起来像是一个属性而非方法,如果我们将其做成一个属 ...

  8. python多态和鸭子类型

    多态与多态性 多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承). 比如:文件分为文本文件,可执行文件(在定义角度) 比如 我们按下 F1 键这个动作: 如果当前在 Fl ...

  9. Python类总结-多态及鸭子类型

    Python天生支持多态. 什么是多态: 一类事务的多种形态. 多态的一个例子 class Alipay(): def pay(self,money): print('用支付宝支付了%s元' % mo ...

随机推荐

  1. scrapyd的安装和scrapyd-client

    1.创建虚拟环境  ,虚拟环境名为sd mkvirtualenv sd #方便管理 2. 安装 scrapyd pip3 install scrapyd 3. 配置 mkdir /etc/scrapy ...

  2. git-commit Angular规范

    commit message的格式 每次提交,Commit message 都包括三个部分:Header,Body 和 Footer. <type>(<scope>): < ...

  3. springboot之jackson的两种配置方式

    springboot 针对jackson是自动化配置的,如果需要修改,有两种方式: 方式一:通过application.yml 配置属性说明:## spring.jackson.date-format ...

  4. centos版本位数查看

    查看版本 cat /etc/issue cat /etc/redhat-release 查看位数 uname -a cat /proc/version   1. getconf LONG_BIT or ...

  5. day2作业

    购物车(两个程序)用户入口1商品信息存在文件里2已购商品,余额记录商家入口2可以添加商品,修改商品价格

  6. lr12脚本参数化

    1.注册.登录.获取商品列表lr脚本 Action() {        lr_save_string("192.168.46.129:8080","IP"); ...

  7. ES5原型琏继承

    function add(){}; add.prototype.showName = "MAN";add.prototype.name = function(){ console. ...

  8. java-面向对象(公元2017-6-28)

    1.面向对象 何为面向对象:编写程序的时候会提取相似的 特征,把这些相似的特征组织起来 类:相似的特征组织起来的类型.            泛指.可理解为模板 对象:属于类中的具体事物       ...

  9. 关于GitHub

    gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub 对于程序员来说就相当于一个仓库可以把自己写的东西放到网上 要想使用GitHub必须 ...

  10. 低版本IDE 打开 高版本 IDE 代码时 unit

    可以用单元别名 比如Vcl.Forms=Forms 来兼容.