精华内容
下载资源
问答
  • Python的多态

    2014-07-19 00:40:41
    Python的多态不同于C++,Java等语言的多态,不是传统意义上的“一个接口,多种方法”,或者“一个接口,多个类实现”,也不存在父类指针/引用调用子类对象的方法的情况,Parent p = new Child(); p.childMethod();。...
        Python的多态不同于C++,Java等语言的多态,不是传统意义上的“一个接口,多种方法”,或者“一个接口,多个类实现”,也不存在父类指针/引用调用子类对象的方法的情况,Parent p = new Child(); p.childMethod();。Python的多态的解释是,"duck type",即"a bird walks like a duck, talks like a duck, it's a duck"。可以理解为方法对了,其实并不关心对象的类型是怎么样的。
        其他语言可能有方法/函数层面的多态,类/对象层面的多态。Python也有,不过又不太一样。
        方法/函数层面,Python没有方法重载,在同一个命名空间中,同名的函数,与参数列表无关,最后面的同名函数会将前面的同名函数覆盖掉。但利用动态类型,你也根本不必为一个功能/流程相似而仅仅是参数类型不同的函数去写一些姊妹篇,例如一个add(x, y) : return x+y 函数就可以包办 int + int, str + str, list + list。甚至,如果我们多做点工作,classA_obj + classB_obj 也是可以的,例如我们有:
            class A(object):
                def __init__(self):
                    self._int = 1
                def __add__(self, obj):
                    return self._int + obj._int
            class B(object):
                def __init__(self):
                    self._int = 2
                def __add__(self, obj):
                    return self._int + obj._int
            a = A()
            b = B()
            a + b  # --> 3
    当然,这可能有点换汤不换药的感觉,不过这也说明,对于你定义或者实现的方法,不管外层的数据结构是什么样的,当到达最底层的运算的时候,你应该负责运算数的类型一致,或者可以转换到达。
        至于类/对象层面,Python可能表现的不太一样。没有 Parent p = new Child(); p->childMethod(); 这样的情况。不过既然python下,我们操作起来的都是对象的引用,那么只要方法实现了,我们也不必在乎我们调用的是什么样的类的对象。考虑 tuple, list, dict 都有的__str__方法,如果有 t, l, d 分别为这三种类型的对象,那么在 for e in (t, l, d): print e 的时候,迭代器变量e在处理这三者时,并不关心他们的类型,只要实现了__str__方法,print 就会进行更有价值的调用。你完全可以认为这是一种 p->childMethod(); 的变形。
        以上便是对Python多态性的理解。
    展开全文
  • python的多态

    2020-04-13 15:30:04
    ## 下面介绍方法适用于不同数据类型: “ + ” ...不然python回报错 .pop() 适用与于列表,删除括号内索引所对应项。(默认为列表最后一项) 适用于字典,删除括号内字典中键对应值。 ...

    ## 下面介绍的方法适用于不同的数据类型:

    “ + ”

    在数字中意味着相加运算。
    在字符串中,意味着合并两个字符串并返回一个全新的字符串。
    字符串
    在列表中,意味着合并两个列表并返回一个新列表。
    列表
    注意, + 号两边一定是同类型的数据;不然python回报错
    注意

    .pop()

    适用与于列表,删除括号内索引所对应的项。(默认为列表的最后一项)

    列表
    适用于字典,删除括号内字典中键的对应值。

    字典

    展开全文
  • Python支持多态。多态性一词意味着具有多种形式。多态性是Python中类定义一项重要功能,当您在类或子类之间具有通用命名方法时,可以使用该功能。多态可以通过继承来实现,子类可以使用基类方法或对其进行...

    是的,Python支持多态。

    多态性一词意味着具有多种形式。

    多态性是Python中类定义的一项重要功能,当您在类或子类之间具有通用命名方法时,可以使用该功能。

    多态可以通过继承来实现,子类可以使用基类方法或对其进行重写。

    有两种类型的多态性超载

    覆写

    重载:当一个类中的两个或多个方法具有相同的方法名称但参数不同时,就会发生重载。

    覆盖:覆盖是指具有相同方法名称和参数的两个方法(即方法签名)。一种方法在父类中,另一种在子类中。

    示例class Fish():

    def swim(self):

    print("鱼在游泳。")

    def swim_backwards(self):

    print("The Fish can swim backwards, but can sink backwards.")

    def skeleton(self):

    print("The fish's skeleton is made of cartilage.")

    class Clownfish():

    def swim(self):

    print("小丑鱼在游泳。")

    def swim_backwards(self):

    print("小丑鱼会向后游。")

    def skeleton(self):

    print("The clownfish's skeleton is made of bone.")

    a = Fish()a.skeleton()

    b = Clownfish()b.skeleton()

    当我们使用python polymorphism.py命令运行程序时,我们将获得预期的输出-

    输出结果The fish's skeleton is made of cartilage.

    The clownfish's skeleton is made of bone.

    展开全文
  • 1.多态的概念:多态是一类事物有多种形态,(一个抽象类有多个子类,因而多态的的概念依赖于继承)比如:序列类型有多种形态:字符串,列表,元组动物有多种形态:人,狗,猪import abcclass Animal(metaclass=abc...

    1.多态的概念:多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的的概念依赖于继承)

    比如:序列类型有多种形态:字符串,列表,元组

    动物有多种形态:人,狗,猪

    import abc

    class Animal(metaclass=abc.ABCMeta): #同一类事物:动物

    @abc.abstractmethod

    def talk(self):

    pass

    class People(Animal): #动物的形态之一:人

    def talk(self):

    print('say hello')

    class Dog(Animal): #动物的形态之二:狗

    def talk(self):

    print('say wangwang')

    class Pig(Animal): #动物的形态之三:猪

    def talk(self):

    print('say aoao')

    2.多态性

    多态性的概念:指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。在面向对象方法中一般是这样表述多态性:向不同的对象发送同一条消息,不同的对象在接收时会产生不同的行为。不同的行为就是指不同的实现,即执行不同的函数。

    定义统一的接口

    >>> def func(animal): #参数animal就是对态性的体现

    ...     animal.talk()

    ...

    >>> people1=People() #产生一个人的对象

    >>> pig1=Pig() #产生一个猪的对象

    >>> dog1=Dog() #产生一个狗的对象

    >>> func(people1)

    say hello

    >>> func(pig1)

    say aoao

    >>> func(dog1)

    say wangwang

    2.1多态性的好处

    1.增加了程序的灵活性

    以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal)

    2.增加了程序额可扩展性

    通过继承animal类创建了一个新的类,使用者无需更改自己的代码,还是用func(animal)去调用

    >>> class Cat(Animal): #属于动物的另外一种形态:猫

    ... def talk(self):

    ... print('say miao')

    ...

    >>> def func(animal): #对于使用者来说,自己的代码根本无需改动

    ... animal.talk()

    ...

    >>> cat1=Cat() #实例出一只猫

    >>> func(cat1) #甚至连调用方式也无需改变,就能调用猫的talk功能

    say miao

    '''

    这样我们新增了一个形态Cat,由Cat类产生的实例cat1,使用者可以在完全不需要修改自己代码的情况下。使用和人、狗、猪一样的方式调用cat1的talk方法,即func(cat1)

    '''

    python基础——多态与多态性

    python基础--多态与多态性 1 多态 多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承) 1. 序列类型有多种形态:字符串,列表,元组. 2. 动物有多种形态:人, ...

    python基础----多态与多态性、super函数用法、继承原理

    一.多态与多态性                                                                        ㈠多态: 多态指的是一类事物有多种形态, ...

    Python 的多态与多态性

    多态:是指一类事物有多种形态(!!!!定义角度!!!!) 多态性:在继承的基础上, (!!!!使用角度!!!!!) 使用多态性,实现了利用函数统一调用一个接口 多态 #多态:同一种事物的多种形态,动物 ...

    python基础之类的多态与多态性

    原文链接:https://www.cnblogs.com/luchuangao/p/6739557.html 很多人喜欢将多态与多态性二者混为一谈,然后百思不得其解,其实只要分开看,就会很明朗. 一 ...

    Python 面向对象(创建类和对象,面向对象的三大特性是指:封装、继承和多态,多态性)

    概念:                                                                                                 ...

    python之旅:面向对象之多态、多态性

    一 多态 多态指的是一类事物有多种形态 eg:动物有多种形态:猫,狗,猪 class Animal: #动物类 def eat(self): #吃 pass def drink(self): #喝 p ...

    Python基础-接口与归一化设计、抽象类、继承顺序、子类调用父类,多态与多态性

    一.接口与归一化设计 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 由 ...

    Python开发基础-Day21多态与多态性、绑定方法和非绑定方法

    多态与多态性 多态 多态并不是一个新的知识 多态是指一类事物有多种形态,在类里就是指一个抽象类有多个子类,因而多态的概念依赖于继承 举个栗子:动物有多种形态,人.狗.猫.猪等,python的序列数据类 ...

    Py修行路 python基础 (十六)面向对象编程的 继承 多态与多态性 封装

    一.继承顺序: 多继承情况下,有两种方式:深度优先和广度优先 1.py3/py2 新式类的继承:在查找属性时遵循:广度优先 继承顺序是多条分支,按照从左往右的顺序,进行一步一步查找,一个分支走完会走另 ...

    随机推荐

    开发至今,终于开始测试bug,可以省心点了

    今天遇到一个特别奇葩的问题 IOSSDK9.1 Xcode7.1.1 使用表控制器UITableViewController来刷新表时, 之前对表的frame进行的修改,都会被恢复,沾满整个屏幕. 目 ...

    vert.x学习(二),使用Router来定义用户访问路径

    这里需要用到vertx-web依赖了,依然是在pom.xml里面导入 <?xml version="1.0" encoding="UTF-8"?> ...

    php设计模式 Proxy &lpar;代理模式&rpar;

    代理,指的就是一个角色代表另一个角色采取行动,就象生活中,一个红酒厂商,是不会直接把红酒零售客户的,都是通过代理来完成他的销售业务.而客户,也不用为了喝红酒而到处找工厂,他只要找到厂商在当地的代理就行 ...

    flask01 安装及初涉

    一.安装 1.pip的安装 $ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py $ python get-pip.p ...

    Session对象的集合

    Session StaticObjects 集合 StaticObjects 集合包含 Session 对象范围中用 标记创建的所有对象.该集合可用于确定对象特定属性的值 ...

    为WPF版的GridControl控件添加行序号功能

    废话不多数,先上效果图和代码: 包装GridControl控件 cs using DevExpress.Xpf.Data; using DevExpress.Xpf.Grid; using Syste ...

    &lbrack;leetcode-623-Add One Row to Tree&rsqb;

    Given the root of a binary tree, then value v and depth d, you need to add a row of nodes with value ...

    kubernetes进阶(01)kubernetes的namespace

    一.Namespace概念 Namespace是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或用户组. 常见的pods, services, replication co ...

    5、Python文件类型

    Python文件类型 源代码 Python源代码的文件以"py"为扩展名,由Python程序解释,不需要编译 字节代码 Python源文件经编译后生成的扩展名为"pyc& ...

    展开全文
  • Python多态的作用让具有不同功能函数可以使用相同函数名,这样就可以用一个函数名调用不同内容(功能)函数。Python多态的特点1、只关心对象实例方法是否同名,不关心对象所属类型;2、对象所属类之间...
  • 在面向对象程序设计中,除了封装和继承特性外,多态也是一个非常重要特性,下面详细了解什么是多态。我们都知道,Python 是弱类型语言,即在使用变量时,无需为其指定具体数据类型,这就可能出现,同一个变量会...
  • 在面向对象程序设计中,除了封装和继承特性外,多态也是一个非常重要特性,下面详细了解什么是多态。我们都知道,Python 是弱类型语言,即在使用变量时,无需为其指定具体数据类型,这就可能出现,同一个变量会...
  • 多态是指通过基类指针或者引用,在运行时动态调用实际绑定对象函数行为。对于其他如C++语言,多态是通过在基类函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象实际类型来调用相应...
  • 匿名用户1级2013-12-27 回答重新写了一个不显示调用__init__:class Father :&nbsp;&nbsp;&nbsp;&nbsp;def drink(self):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...
  • 多态多态是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承)序列类型有多种形态:字符串,列表,元组动物有多种形态:人,狗,猪#多态:同一种事物多种形态,动物分为人类,猪类...
  • python自动拆分某个文件下某个excel,按照一定数量去拆分为对个excel#!/usr/bin/env python # -*- coding:utf-8 -*- import xlrd from pyexcelerate import Workbook import os """ excel 文件拆分 1、指定源文件...
  • 关于Python的多态问题

    2020-05-25 08:44:33
    3.多态 不同 子类对象 调用相同 父类方法,产生不同执行结果 •多态 可以 增加代码灵活度 •以 继承 和 重写父类方法 为前提 •是调用方法技巧,不会影响到类内部设计 016_多态示意图 多态案例演练 需求...
  • 首先也是最重要python不支持多态,也不用支持多态,直接点说多态就是一个对象被不同类型引用就表现出不同形态,但是在Python中引用没有固定类型,引用是可变,所以对于任何一个对象只有一种形态就是它...
  • 12、python的多态

    2020-04-20 18:16:46
    1、封装:python _ _对类中的的变量也就是属性进行私有,目的是,不能够直接访问到类中属性he变量值,因为这样会造成数据不安全;我们可以通过方法去间接访问类中私有属性,以提高数据访问安全性。那么为...
  • 当同一个变量在调用同一个方法时,完全可能呈现出多种行为,这就是所谓的多态。 class Canvas: def draw_pic(self, shape): print('--开始绘图--') shape.draw(self) class Rectangle: def draw(self, ...
  • 摘写自《python学习手册》第16章 函数基础 引言 函数定义与调用 定义 def times(x,y): return x*y 上面代码定义了一个名为times函数,该函数将返回它两个参数乘积。 调用 def语句创建了一个函数但是没有...
  • (1)面向对象程序设计有三大特征:封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism) (2)封装(Encapsulation):类包含了数据和方法,将数据和方法放在一个类中就构成了封装。 (3)继承...
  • 多态是指通过基类指针或者引用,在运行时动态调用实际绑定对象函数行为。  对于其他如C++语言,多态是通过在基类函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象实际类型来调用...
  • Python 的多态与多态性

    2019-10-05 20:58:26
    多态:是指一类事物有多种形态(!!!...#多态:同一种事物多种形态,动物分为人类,猪类(在定义角度) class Animal: def run(self): raise AttributeError('子类必须实现这个方法') c...
  • python不支持多态,但他是一种多态语言,看下面这篇博客: 参考资料: [1].再谈python的多态 转载于:https://www.cnblogs.com/cv-pr/p/4931017.html

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,052
精华内容 2,420
关键字:

python的多态

python 订阅