武进网站建设/石家庄seo外包公司
【 一 】什么是继承(Inheritance)
继承允许创建一个新类(称为子类或派生类),从已存在的类(称为父类或基类)继承属性和方法。子类可以继承父类的特性,并可以通过添加新的属性和方法来扩展或修改其行为。继承提供了代码重用的机制,并支持层次化的组织和分类。
-
子类继承父类的属性和方法:子类可以继承父类中的公共或保护的属性和方法。这意味着子类可以访问和使用父类已定义的字段、属性和方法,无需重新实现他们。
-
子类可以添加新的属和方法:子类可以在继承父类的基础上添加新的属性和方法,以满足自己的特定需求。这样就可以在不修改父类的情况下扩展功能
-
子类可以覆盖父类的方法:子类可以根据需要覆盖父类中的方法,以提供自己的实现。这被称为方法的重写或覆盖。通过重写父类的方法,子类可以改变方法的行为,实现自己的逻辑。
-
子类可以形成继承层次结构:* *** 通过多层次的基础, 可以形成一个继承层次结构。每个子类都可以有自己的子类,从而形成一个类的层次结构。
继承是面向对象编程中的一种重要机制,它提供了代码复用、可扩展性和灵活性。通过继承,可以设计出更加模块化、易于维护和扩展的代码结构。
【 2 】继承的应用
class Plant:def __init__(self,flower):self.flower = flowerdef peak(self):print(f'这是一朵{self.flower}')# 子类继承父类
class Pose(Plant):def __init__(self,flower):# 调用父类的构造函数super().__init__(flower)def fill(self):# 重写父类的方法print(self.flower + '先种花先挖坑!')# 子类继承子类
class Sakura(Pose):def __init__(self,flower):super().__init__(flower)def speak(self):# 子类添加新的方法print(self.flower + '正在挖坑')# 创建对象并调用方法plant = Plant('植物')
plant.peak()
# 这是一朵植物pose = Pose('玫瑰')
pose.fill()
# 玫瑰先种花先挖坑!sakura = Sakura('樱花')
sakura.speak()
# 樱花正在挖坑
【 3 】 经典类和新式类
(1)前言
在Python 2.x中, 存在着经典类和新式类的概念。
在Python 3.x中, 只有新式类
经典类是指没有显示继承自object
类的类,而新式类则是显式继承自object
类的类。在 Python 2.x 中,如果一个类没有显式地继承自object
类,那么它就被视为经典类
而在 Python 3.x 中,所有的类都隐式地继承自object
类,因此都是新式类。
(2)新式类相对于经典类,优点:
-
支持新的类属性和特殊方法:
-
支持描述符, 可以对属性进行更加啊灵活的控制
-
支持方法解析顺序(MRO),可以更好地处理多继承的情况
(3)新式类和经典类的区别:
1.类的定义方式:
-
经典类:类的定义不继承自
object
类。例如:class MyClass:
。 -
新式类:类的定义显式或隐式地继承自
object
类。例如:class MyClass(object):
或class MyClass:
2.方法解析顺序:
-
经典类:采用深度优先搜索(Depth-First Search,DFS)的方式来确定方法的调用顺序。
-
新式类:采用广度优先搜索(Breadth-First Search,BFS)的方式来确定方法的调用顺序
3.属性访问方式:
-
经典类:属性的访问是通过遍历每个父类,并按照继承顺序查找属性。
-
新式类:属性的访问是通过 C3 线性化算法计算出的 MRO 来决定属性的查找顺序。
4.内置函数super()的行为:
-
经典类:
super()
函数只能用于绑定最近父类的方法。 -
新式类:
super()
函数可以用于调用任意父类的方法。
# 经典类
class A:pass# 新式类
class B(object):pass# 输出类的类型
print(type(A)) # <type 'classobj'>
print(type(B)) # <class 'type'>
在 Python 3 中,不再需要显式地继承自 object
类,因为所有的类都被认为是新式类。所以,Python 3 中的类默认都具有新式类的特性。
深度优先
广度优先
相关文章:

Python面向对象之继承
【 一 】什么是继承(Inheritance) 继承允许创建一个新类(称为子类或派生类),从已存在的类(称为父类或基类)继承属性和方法。子类可以继承父类的特性,并可以通过添加新的属性和方法来…...

如何使用CFImagehost结合内网穿透搭建私人图床并无公网ip远程访问
[TOC] 推荐一个人工智能学习网站点击跳转 1.前言 图片服务器也称作图床,可以说是互联网存储中最重要的应用之一,不仅网站需要图床提供的外链调取图片,个人或企业也用图床存储各种图片,方便随时访问查看。不过由于图床很不挣钱&a…...

Wargames与bash知识14
Wargames与bash知识13 Bandit22 基于时间的作业调度程序cron会定期自动运行一个程序。在/etc/cron.d/中查找配置,并查看正在执行的命令。 注意:查看其他人编写的shell脚本是一项非常有用的技能。此级别的脚本有意使其易于阅读。如果您在理解它的作用时…...

2020年认证杯SPSSPRO杯数学建模C题(第二阶段)抗击疫情,我们能做什么全过程文档及程序
2020年认证杯SPSSPRO杯数学建模 C题 抗击疫情,我们能做什么 原题再现: 2020 年 3 月 12 日,世界卫生组织(WHO)宣布,席卷全球的冠状病毒引发的病毒性肺炎(COVID-19)是一种大流行病。…...

JAVA基础学习笔记-day17-反射
JAVA基础学习笔记-day17-反射 1. 反射(Reflection)的概念1.1 反射的出现背景1.2 反射概述1.3 Java反射机制研究及应用1.4 反射相关的主要API1.5 反射的优缺点 2. 理解Class类并获取Class实例2.1 理解Class2.1.1 理论上2.1.2 内存结构上 2.2 获取Class类的实例(四种方法)2.3 哪些…...

经典算法-模拟退火算法的python实现
经典算法-模拟退火算法的python实现 模拟退火算法基本思想 模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却。加温时,固体内部粒子随温度升高变为无序状,内能增大,而缓慢冷却时粒子又逐渐趋有序。…...

谷粒学院项目redirect_uri 参数错误微信二维码登录
谷粒学院项目redirect_uri 参数错误_redirect_uri": "http%3a%2f%2fguli.shop%2fapi%2fuce-CSDN博客 修改本地配置 # ����˿� server.port8160 # ����&#x…...

Jenkins+nexus
jiekins安装完成 1、安装java环境 [rootnexus ~]# tar -xf jdk-8u211-linux-x64.tar.gz -C /usr/local [rootnexus ~]# vim /etc/profile.d/java.sh JAVA_HOME/usr/local/jdk1.8.0_211 PATH$PATH:$JAVA_HOME/bin [rootnexus ~]# source /etc/profile.d/java.sh 必须要选择与n…...

「JavaSE」类和对象1
🎇个人主页:Ice_Sugar_7 🎇所属专栏:快来卷Java啦 🎇欢迎点赞收藏加关注哦! 类和对象 🍉类的定义🍌类的实例化 🍉this引用🍉对象的构造及初始化🍌…...

Ubuntu server搭建dhcp服务器
安装 直接使用一下命令进行安装 apt-get install isc-dhcp-server 以下就是安装好的图片 然后进入dhcp目录 cd /etc/dhcp 进入后用ls查看当前目录存在哪些文件 使用如下进入dhcp.conf vim dhcpd.conf 红:设置ip域和子网掩码 绿:设置ip池范围 黄…...

2024--Django平台开发-Web框架和Django基础(二)---Mysql多版本共存(Mac系统)
MySQL多版本共存(Mac系统) 想要在Mac系统上同时安装【MySQL5.7 】【MySQL8.0】版本,需要进行如下的操作和配置。 想要同时安装两个版本可以采取如下方案: 方案1:【讲解】 MySQL57,用安装包进行安装。 MyS…...

Pytorch 反向传播 计算图被修改的报错
先看看报错的内容 RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.FloatTensor [5, 1]], which is output 0 of AsStridedBackward0, is at version 2; expected version 1 instead. Hint: enable an…...

android studio设置gradle和gradle JDK版本
文章目录 1.gradle JDK版本2.gradle版本 1.gradle JDK版本 file -> project structure -> SDK Location -> Gradle Settings -> Gradle JDK -> Download JDK 2.gradle版本 file -> project structure -> Project...

Android 15即将到来,或将推出5大新功能特性
Android15 OneUI电池优化 三星最近完成了对其所有设备的稳定版 One UI 6.0 更新的推出,引起了用户的极大兴奋。据新出现的互联网统计数据显示,即将发布的基于 Android 15 的 One UI 7 将通过优化电池和功耗来重新定义用户体验,这是一项具有突…...

sqlalchemy 事务自动控制(类java aop)
最近使用它交互数据库,想实现类似java aop那种自动事务控制,不用手动commit或者rollback。我是用的是flaskdenpendency-injecter 这是我的db的配置类,里面会初始化一些session配置,里面比较重要的是把autocommit和autoflush关闭了…...

vue2-手写轮播图
轮播图5长展示,点击指示器向右移动一个图片,每隔2秒移动一张照片! <template><div class"top-app"><div class"carousel-container"><div class"carousel" ref"carousel">&…...

Google I/O大会:Android 13
3个体验升级的方向 以智能手机为场景核心、 扩大智能终端的应用边界以及实现多设备间更好地协同。具体到系统体验层,安卓13将支持图标颜色随主题更换、为不同应用设定使用的语言、新的媒体中心界面等等,同时谷歌也推出了自家的钱包应用(Goog…...

VUE指令(一)
vue会根据不同的指令,针对不同的标签实现不同的功能。指令是带有 v- 前缀的特殊标签属性。指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。 1、v-text:设置元素的文本内容,不会解…...

微信小程序开发学习笔记《7》全局配置以及小程序窗口
微信小程序开发学习笔记《7》全局配置以及小程序窗口 博主正在学习微信小程序开发,希望记录自己学习过程同时与广大网友共同学习讨论。全局配置官方文档 一、全局配置文件及常用的配置项 小程序根目录下的app.json 文件是小程序的全局配置文件。 常用的配置项如…...

Vue、uniApp、微信小程序、Html5等实现数缓存
此文章带你实现前端缓存,利用时间戳封装一个类似于Redis可以添加过期时间的缓存工具 不仅可以实现对缓存数据设置过期时间,还可以自定义是否需要对缓存数据进行加密处理 工具介绍说明 对缓存数据进行非对称加密处理 对必要数据进行缓存,并…...

如何将ArcGIS工程文件迁移到ArcGIS Pro内
当你刚接触ArcGIS Pro的时候,尝试新建一个工程文件会发现工程文件的后缀已经改变,那么以前在ArcGIS内辛苦制作的工程文件是否就不能在ArcGIS Pro内使用了,答案是否定的,对此Esri也给出了解决方案,这里为大家介绍一下迁…...

Jenkins基础篇--添加用户和用户权限设置
添加用户 点击系统管理,点击管理用户,然后点击创建用户(Create User) 用户权限管理 点击系统管理,点击全局安全配置,找到授权策略,选择安全矩阵,配置好用户权限后,点击…...

C语言基础内容(七)——第08章_C语言常用函数
文章目录 第08章_C语言常用函数本章专题脉络1、字符串相关函数1.1 字符串的表示方式1.2 两种方式的区别1.2 字符串常用函数strlen()strcpy()strncpy()strcat()strncat()strcmp()strlwr()/strupr()1.3 基本数据类型和字符串的转换基本数据类型 -> 字符串字符串 -> 基本数据…...

CRM系统针对销售管理有哪些功能?如何帮助销售效率增长?
从长远来看,有效的CRM管理系统可以帮助您的企业达到甚至超过收入目标。现代大多数企业都依靠CRM系统来管理其销售周期并增加收入。但是,当大多数人提到CRM时,他们指的是使能够改善业务关系并轻松管理不断团队的软件或工具。合格的CRM系统能够…...

基于Pixhawk和ROS搭建自主无人车(一):底盘控制篇
参考 ArduPilot Development超维空间科技乐迪MiniPix车船使用说明书 1. 硬件篇 1.1 底盘构成一览 1.2 底盘接线示意 2. 软件篇 2.1 APM 固件下载 pixhawk 是硬件平台,PX4 是 pixhawk 的原生固件,APM(Ardupilot Mega)是硬件平台…...

部署 Spring Boot 应用中文文档
本文为官方文档直译版本。原文链接 部署 Spring Boot 应用中文文档 引言部署到云Cloud Foundry与服务绑定 KubernetesKubernetes 容器生命周期 HerokuOpenShift亚马逊网络服务(AWS)AWS Elastic Beanstalk使用 Tomcat 平台使用 Java SE 平台 总结 CloudCa…...

【数据库原理】(23)实际应用中的查询优化方法
一.基于索引的优化 索引是数据库查询优化的关键工具之一。合理地使用索引可以显著提高查询速度,降低全表扫描的成本。以下是建立和使用索引的一些基本原则和最佳实践。 索引的建立与使用原则 数据量规模与查询频率: 值得建立索引的表通常具有较多的记录࿰…...

MySQL中datetime和timestamp的区别
datetime和timestamp的区别 相同点: 存储格式相同 datetime和timestamp两者的时间格式都是YYYY-MM-DD HH:MM:SS 不同点: 存储范围不同. datetime的范围是1000-01-01到9999-12-31. 而timestamp是从1970-01-01到2038-01-19, 即后者的时间范围很小. 与时区关系. datetime是存储…...

2024年如何使用WordPress构建克隆Udemy市场
您想创建像 Udemy 这样的学习管理 (LMS) 网站吗?最好的学习管理系统工具LifterLMS将帮助您制作像Udemy市场这样的 LMS 网站。 目录 Udemy市场是什么? 创建 Udemy 克隆所需的几项强制性技术: 步骤 1) 注册您的域名 步骤 2) 获取虚拟主…...

(leetcode)Z字形变换 -- 模拟算法
个人主页:Lei宝啊 愿所有美好如期而遇 题目链接 . - 力扣(LeetCode) 输入描述 string convert(string s, int numRows),输入一个字符串s,以及一个行数numRows,将字符串按照这个行数进行Z字形排列&…...