Python中类和对象(2)

news2024/11/26 16:23:33

1.继承

Python 的类是支持继承的:它可以使用现有类的所有功能,并在无需重新编写代码的情况下对这些功能进行扩展。

通过继承创建的新类称为 “子类”,被继承的类称为 “父类”、“基类” 或 “超类”。

继承语法是将父类写在子类类名后面的小括号中:

>>> class A:
...     x = 520
...
...     def hello(self):
...         print("你好,我是A~")
...
>>> class B(A):
...     pass
...
>>> b = B()
>>> b.x
520
>>> b.hello()
你好,我是A~

基于上面代码的继承关系,类 A 就是父类,类 B 则是子类。

如果在子类 B 里面,存在跟父类 A 一样的属性和方法名,那么子类就会覆盖父类:

>>> class B(A):
...     x = 880
...
...     def hello(self):
...         print("你好,我是B~")
...
>>> b = B()
>>> b.x
880
>>> b.hello()
你好,我是B~

2.isinstance和issubclass

isinstance() 函数用于判断一个对象是否属于某个类。
issubclass() 函数用于判断一个类是否属于某个类的子类。
小甲鱼友情提示:

在还没有学习 isinstance() 函数之前,我们使用 type() 函数判断对象的类型,其实这对 type() 函数来说真有点大材小用了(type 其实是 Python 中的神,学到后面你们就知道了o)。

对于检测对象类型(也就是检测对象所属的类)这件小事来说,使用 isinstance() 函数无疑是更名副其实的!

另外,使用 isinstance() 函数还会将父类考虑进去:

>>> class A:
...     pass
...
>>> class B(A):
...     pass
...
>>> b = B()
>>> isinstance(b, B)
True
>>> isinstance(b, A)
True
>>> type(b)
<class '__main__.B'>

3.多重继承

Python 的类是支持多重继承的,也就是一个子类同时可以继承多个父类:

>>> class A:
...     x = 520
...     def hello(self):
...         print("你好,我是A~")
...
>>> class B:
...     x = 880
...     y = 250
...     def hello(self):
...         print("你好,我是B~")
...
>>> class C(A, B):
...     pass
...
>>> issubclass(C, A)
True
>>> issubclass(C, B)
True

如果实例化一个类 C 的对象为 c,那么访问 c.x 和调用 c.hello() 得到的结果分别是:

>>> c = C()
>>> c.x
520
>>> c.y
250
>>> c.hello()
你好,我是A~

从例子中可以看出,对于多个父类拥有相同属性和方法的情况,它的访问顺序是按从左到右的。

4.组合

类的组合跟继承不同,继承是具有上下从属关系,而组合的多个类则是同级关系,下面代码演示的就是类的组合:

>>> class Turtle:
...     def say(self):
...         print("不积跬步,无以至千里!")
...
>>> class Cat:
...     def say(self):
...         print("喵喵喵~")
...
>>> class Dog:
...     def say(self):
...         print("哟吼,我是一只小狗~")
...
>>> class Garden:
...     t = Turtle()
...     c = Cat()
...     d = Dog()
...     def say(self):
...         self.t.say()
...         self.c.say()
...         self.d.say()
...                
>>> g = Garden()
>>> g.say()
不积跬步,无以至千里!
喵喵喵~
哟吼,我是一只小狗~

5.思维导图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/331757.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

相机坐标系的正向投影和反向投影

1 、正向投影: 世界坐标系到像素坐标系 世界3D坐标系(x, y, z) 到图像像素坐标(u,v)的映射过程 &#xff08;1&#xff09;世界坐标系到相机坐标系的映射。 两个坐标系的转换比较简单&#xff0c;就是旋转矩阵 平移矩阵&#xff0c;旋转矩阵则是绕X&#xff0c; Y&#xff…

nginx中间件常见漏洞总结

nginx中间件常见漏洞总结1.中间件漏洞的概念1.1 中间件、容器、服务器的基本概念辨析2.Nginx 配置错误导致漏洞2.1 $uri导致的CRLF注入漏洞2.1.1 漏洞成因2.1.2 利用方式2.1.3 修改方案2.2 目录穿越漏洞2.1.1 漏洞成因2.2.2 利用方式2.2.3 修改方案2.3 Http Header被覆盖2.3.1 …

JS学习笔记三

目录 一、this详解 1、this原理 2、使用场景 1、普通函数的调用&#xff0c;this指向的是Window 2、对象的方法&#xff0c;this指的是该对象 一、this详解 1、this原理 this是JavaScript的一个关键字&#xff0c;函数调用时才会出现&#xff1b; 因为函数是在一定的环…

Android核心开发【UI绘制流程解析+原理】

一、UI如何进行具体绘制 UI从数据加载到具体展现的过程&#xff1a; 进程间的启动协作&#xff1a; 二、如何加载到数据 应用从启动到onCreate的过程&#xff1a; Activity生产过程详解&#xff1a; 核心对象 绘制流程源码路径 1、Activity加载ViewRootImpl ActivityThread…

Java并发编程概述

在学习并发编程之前&#xff0c;我们需要稍微回顾以下线程相关知识&#xff1a;线程基本概念程序&#xff1a;静态的代码&#xff0c;存储在硬盘中进程&#xff1a;运行中的程序&#xff0c;被加载在内存中&#xff0c;是操作系统分配内存的基本单位线程&#xff1a;是cpu执行的…

Jenkins部署及持续集成——傻瓜式教程

文章目录jenkins安装jenkins启动jenkins登录jenkins插件Jenkin创建一个项目通过Git进行构建构建策略jenkins安装 jenkins官网 https://www.jenkins.io/ 支持Docker pull下载安装 我用的windows&#xff0c;这里下载war包,这个位置下载的是最新的&#xff0c;需要java11或者更…

论文笔记:Depth-supervised NeRF: Fewer Views and Faster Training for Free

中文标题&#xff1a;深度信息监督的神经辐射场&#xff1a;需要更少的视角并且更快的训练 解决的问题&#xff1a; 在缺少视野的情况下&#xff0c;神经辐射场不能拟合正确的几何结构。 创新点 NeRF的第一步需要对场景图像做SFM(structure from motions),这个过程不光会获…

数据库/SQL教学推荐用什么样SQL工具?必须管理方便,轻松上手的

SQL语言逐渐成为职场人士必备的能力。很多人一直走上职场才了解什么是SQL&#xff0c;而更多人在大学就已经开始学习。 这些人一定对类似《数据库原理与应用》的课程不陌生。还记得你们是怎么熬过这门课的吗&#xff1f; 为什么说“熬”呢&#xff1f;实话说&#xff0c;数据库…

1行Python代码,对话ChatGPT,网友:太方便了

大家好&#xff0c;这里是程序员晚枫。 最近ChatGPT火爆全球&#xff0c;哪怕你不是程序员&#xff0c;应该也听过他的大名了。 今天我们就来一起体验一下~1行Python代码就够了&#xff01; 上代码 导入poai这个库后&#xff0c;只需要1行代码poai.chatgpt.chat&#xff0c…

ThinkPHP 6 视图:从零开始

框架6.0默认只能支持PHP原生模板&#xff0c;如果需要使用thinkTemplate模板引擎&#xff0c;需要安装think-view扩展&#xff08;该扩展会自动安装think-template依赖库&#xff09;。 PHP原生模板 1.配置文件 默认设置为Think&#xff0c;因为没有安装&#xff0c;直接使用会…

lucene-8.5.1总结三:索引文件格式(1)

Lucene的索引里面存了些什么&#xff0c;如何存放的&#xff0c;也即Lucene的索引文件格式&#xff0c;是读懂Lucene源代码的一把钥匙。当我们真正进入到Lucene源代码之中的时候&#xff0c;我们会发现:Lucene的索引过程&#xff0c;就是按照全文检索的基本过程&#xff0c;将倒…

基于 NeRF 的 App 上架苹果商店!照片转 3D 只需一部手机,网友们玩疯了

前言 只用一部手机&#xff0c;现实中的 2D 照片就能渲染出 3D 模型&#xff1f; 没错&#xff0c;无需再手动上传电脑或安装激光雷达&#xff0c;苹果手机自带 App 就能生成 3D 模型。 这个名叫 Luma AI 的“NeRF APP”&#xff0c;正式上架 App Store 后爆火&#xff1a; 小…

一个优质软件测试工程师的简历应该有的样子(答应我一定要收藏起来)

个人简历 基本信息 姓 名&#xff1a;xxx 性 别&#xff1a; 女 年 龄&#xff1a;24 现住 地址&#xff1a; 深圳 测试 经验&#xff1a;3年 学 历&#xff1a;本科 联系 电话&#xff1a;18xxxxxxxx 邮 箱&#xff1a;xxxxl163.com 求职意向 应聘岗位&#xff1a;软件…

吸收氨氮的树脂,脱氨树脂,污水处理厂氨氮低,总氮高,如何处理

产品介绍 氨氮在水中以游离氨和铵根离子的形式存在&#xff0c;根据一水合氨与铵根的平衡关系可知&#xff0c;利用离子交换工艺除氨氮时pH值尽量在偏酸性&#xff08;pH值6左右&#xff09;环境效果更佳。 随着环保形势越来越严&#xff0c;对于总氮的深度处理标准也越来越严…

CNStack 2.0:云原生的技术中台

在进入千禧年后&#xff0c;随着计算机技术的发展和业务创新的不断涌现&#xff0c;许多大公司内的 IT 计算中心也在酝酿着变革。一方面&#xff0c;各部门相对独立的 IT 管理平台已经难以满足日益增长和不断变化的计算管理需求&#xff1b;另一方面&#xff0c;IT 计算中心也越…

国民应用QQ如何实现高可用的订阅推送系统

导语&#xff5c;腾讯工程师许扬从 QQ 提醒实际业务场景出发&#xff0c;阐述一个订阅推送系统的技术要点和实现思路。如何通过推拉结合、异构存储、多重触发、可控调度、打散执行、可靠推送等技术&#xff0c;实现推送可靠性、推送可控性和推送高效性&#xff1f;本篇为你详细…

OpenFST、WFST 小记

文章目录关于 OpenFST安装 openfst关于 WFST编译 WFST关于 OpenFST 官网&#xff1a;https://www.openfst.org/twiki/bin/view/FST/WebHome快速入门文档&#xff1a;https://www.openfst.org/twiki/bin/view/FST/FstQuickTour下载&#xff1a;https://www.openfst.org/twiki/b…

linux系统安装jdk+tomcat+mysql

连接linux Windows安装FinalShell免费版,连接linux服务器 Mac OS连接步骤如下&#xff1a; 打开终端&#xff0c;输入ssh 服务器用户名ip -p 端口号&#xff08;如&#xff1a;ssh root000.000.000.00 -p 22&#xff09;到这会让你输入yes或者no来确认是否连接&#xff0c;输…

APISpace 的 ChatGPT 它来了 一分钟快速接入没烦恼

如此火爆的 ChatGPT 大家肯定都已经知道了&#xff0c;我就不多说了。但是呢&#xff0c; OpenAI 的 ChatGPT 官网注册麻烦&#xff0c;接入繁琐&#xff0c;且需要海外信用卡才能支付&#xff0c;这就让广大的国内开发者头疼了。 于是&#xff0c;为了方便广大国内开发者体验…

加入bing体验chatGPT大军中来吧

1 第一步&#xff1a;加入候选名单 1、首先需要加入候选名单 https://www.microsoft.com/zh-cn/edge?formMA13FJ 2、下载最新的Edge浏览器、androd、iOS都有试用版本&#xff08;可以看到iOS加护当前已满&#xff09; 这里我下载的是dev版本&#xff0c;Canary版本由于是…