您现在的位置是:首页 > 正文

Python——面向对象(OOP)多态篇

2024-02-01 02:28:51阅读 4

多态

通过一个对象调用一个方法(或者访问一个属性)的时候,根据对象的不同,同一个名字的方法(或者属性)被调用时能够展现不同的状态(对于方法来说就是不同的功能,对于属性来说就是不同的数据),简单来说,就是代码写出来只有一种写法,但是实际执行代码的时候,根据对象的不同,可能会导致不同结果的产生,这就是多态

Python中的多态

面向对象的其他编程语言(比如C++、Java)中"多态"表现得比较明显,因为这些语言为静态类型语言,即在写程序时必须声明所有变量的数据类型,而Python不需要对变量的数据类型进行声明(因为Python的变量仅仅存储的是对象的引用),所以就会导致多态的特征在Python中体现得并不是特别明显

class A:
    def func(self):
        print('类对象A中的func函数')


class B:
    def func(self):
        print('类对象B中的func函数')

def F(ins):
    ins.func()  #调用传入的实例对象的func实例方法

ins_A = A()     #创建类对象A的实例对象
ins_B = B()     #创建类对象B的实例对象
F(ins_A)        #将类对象A的实例对象传入F函数
F(ins_B)        #将类对象B的实例对象传入F函数

#输出结果:
"""
类对象A中的function函数
类对象B中的function函数
"""

可以看到在函数F中都是调用传入对象的func实例方法(即代码写法只有一种),但是不同的实例对象传入以后,调用的是不同类对象中的func实例方法(即实现的效果可以有多种)

网站文章

  • 基数排序法处理有负数问题方法

    基数排序存在问题对于包含负数和0的数据无法进行排序,本文主要解决方法如下:将所有的数加一个正数,使得所有的数变为正数进行基数排序;排序完之后在减点加的正数值输出。(亲测有效)package RedixSort;import java.util.Arrays;public class redixSort { public static void main(String[] ...

    2024-02-01 02:28:44
  • 为什么服务器系统会异常,windows服务器查看系统异常

    为什么服务器系统会异常,windows服务器查看系统异常

    windows服务器查看系统异常 内容精选换一换云服务器网络异常、防火墙未放行本地远程桌面端口、云服务器CPU负载过高等问题均可能导致云服务器无法正常登录。本节操作介绍无法登录Windows弹性云服务...

    2024-02-01 02:28:15
  • Java枚举(Enum)类型原理探求

      注意: 使用专门的Java反编译工具,比如JD GUI、luyten等对Eumn进行反编译的效果接近源码的效果,无法看到继承等特性,JD-GUI反编译的效果和源码时一致的,这也说明使用JD GUI来进行实际的反编译还是不错的。...

    2024-02-01 02:28:08
  • 《利息理论》指导 TCP 拥塞控制

    《利息理论》指导 TCP 拥塞控制

    名著的效果就是提供高强度思维训练,读懂就形成了反射,可融会贯通,相对而言,畅销书就没这效果,过程中可能觉得很哇塞,但主题还是散。端到端 cc 算法作为借贷实体,它有欲望和节制,希望获得更大带宽却不想消...

    2024-02-01 02:28:00
  • 详解String,StringBuffer,StringBuilder

    详解String,StringBuffer,StringBuilder

    一、通过代码测试三者进行字符串拼接的性能对String,StringBuffer,StringBuilderString,StringBuffer,StringBuilderString,String...

    2024-02-01 02:27:32
  • Collections.unmodifiableMap 用法解析

    Collections.unmodifiableMap 用法解析

    返回指定映射的不可修改视图。 通俗的讲就是:产生一个只读的Map,当你调用此map的put方法时会抛错。 public static Map unmodifiableMap(Map m) 此方法允许模块为用户提供对内部映射的“只读”访问。 在返回的映射上执行的查询操作将“读完”指定的映射。 试图修改返回的映射(不管是直接修改还是通过其 collection 视图进行修改)将

    2024-02-01 02:27:24
  • 短暂的“歧途”——写在短暂的第二份工作结束之时

    距离上一份工作结束总结才过去3个月,现在又要写第二份工作总结了。不用说,这份工作绝对是不太如意的。其中有不少需要总结的地方,希望读者也能从中吸取经验和教训。记事去年9月,还在第一份工作期间,跳槽的心就...

    2024-02-01 02:27:17
  • Jenkins部署新项目

    Jenkins部署新项目

    1、安装 Jenkins 下载jenkins-1.656.zip文件,进行安装 2、部署一个项目 2.1登录Jenkins http://127.0.0.1:xxxx/ 2.2新建 2.2.1构建一个maven项目 2.2.2输入SVN地址 2.2.4构建触发器 构建方式

    2024-02-01 02:27:10
  • Java读取输入流和文件内容——BufferedReader

    BufferedReader读取控制台输入从控制台读取数据readline() 方法关于 `try-catch` 语句的拓展 Java不像C那样直接用 scanf 即可从控制台读入数据,读取数据很麻烦...

    2024-02-01 02:26:41
  • Python使用定时任务

    Python使用定时任务

    【代码】Python使用定时任务。

    2024-02-01 02:26:33