Python面向对象编程思想的深入学习

魔术方法的使用

在这里插入图片描述

案例体验

class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # __str__魔术方法, 如果不去写这个方法,那么print输出的则是信息存储的内存地址。
    def __str__(self):
        return f'Student类对象,name:{self.name}, age:{self.age}'

    # __lt__魔术方法, 可以给类对象添加比较大小的功能(只能用到> or <)。
    def __lt__(self, other):
        return self.age < other.age

    # __le__魔术方法,支持(>= or <=)的比较方法。
    def __le__(self, other):
        return self.age <= other.age

    # __eq__魔术方法,完成相等的比较。
    def __eg__(self, other):
        return self.age == other.age

stu = Student('周杰轮', 31)
stu1 = Student('李连杰', 21)
print(stu)
print(str(stu))
print(stu1 > stu)
print(stu >= stu1)

面相对象编程

私有成员和方法的定义使用

私有成员的实际意义:在类中提供仅供内部使用的属性和方法 ,而不对外开放(类对象无法使用)

定义的语法:在定义变量和函数的基础上,在函数名或变量名前添加2个下划线“__”

案例体验

"""
  演示面相对象封装思想中私有成员的使用
"""

# 定义一个类, 内部含有私有成员变量和私有成员方法
# 私有成员的实际意义:在类中提供仅供内部使用的属性和方法,而不对外开放(类对象无法使用)
class Phone:

    __current_voltage = 1 # 当前手机运行电压,私有成员变量和方法可以被类中其他成员调用。

    def __keep_single_core__(self):
        print("让CPU以单核模式运行")

    def call_by_5G(self):
        if self.__current_voltage >= 1:
            print("5G通话已经开启")

        else:
            self.__keep_single_core__()
            print("电量不足,无法使用5G通话,并已经设置为单核运行进行省电。")


phone = Phone()
phone.call_by_5G()

继承

单继承

在这里插入图片描述

概念:一个子类继承了一个父类

案例体验

"""
  演示类中继承的方法使用
"""
# 单继承
class Phone:
    IMEI = None # 序列号
    producer = "HM" # 厂商

    def call_by_4G(self):
        print("4G通话")

class Phone2024(Phone):
    face_id = "131153" # 面部识别ID

    def call_by_5G(self):
        print("2024新增加的功能,5g通话")

phone = Phone2024()
print(phone.producer)
phone.call_by_4G()
phone.call_by_5G()

多继承

概念:一个子类继承多个父类

多继承中,如果父类有相同名方法或属性,先继承优先级高于后继承

在这里插入图片描述

pass 关键字的作用是什么?

pass 是站位语句,用来保证函数(方法)或类定义的完整性,表示无内容,空的意思

复写

在这里插入图片描述

在这里插入图片描述

案例体验

class Phone:
    IMEI = None # 序列号
    producer = "HMMMM" # 厂商

    def call_by_4G(self):
        print("4G通话")

# 定义子类,复写父类成员
class MyPhone(Phone):
    producer = "ITHEIMA"

    def call_by_5G(self):
        print("开启GPU单核模式,确保通话时候省电")
        # 方式1,父类名成员变量.
        print(f"父类的厂商是:{Phone.producer}")
        Phone.call_by_4G(self)
        # 方法2,super().成员变量
        print(f"父类的厂商是:{super().producer}")
        super().call_by_4G()
        print("关闭GPU单核模式,确保性能")

phone = MyPhone()
phone.call_by_5G()
print(phone.producer)

类型注解

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

多态

1)什么是多态?

多态是指,同一行为,使用不同的对象获得不同的状态。

如,定义函数(方法),通过类型注解声明需要父类对象,实际传人子类对象进行工作,从而获得不同的工作状态

2)什么是抽象类(接口)

包含抽象方法的类,称之为抽象类。抽象方法指的是:没有具体实现的方法(pass)

称之为抽象方法

3)抽象类的作用

多用于顶层设计(设计标准),以便子类做具体实现。

也是对子类的一种软约束,要求子类必须复写(实现)父类的一些方法

并配合多态使用,获得不同的工作状态。

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SolidWorks进行热力学有限元分析一、模型建立

1.话不多说按照我的操作来 2.这一步鼠标移到中心点直接拉就行 3.这里选单位&#xff0c;继续按照操作来 4.选中这个边&#xff0c;直接拉&#xff0c;输入尺寸后确定&#xff0c;其他边同理 5.鼠标右键设置厚度 6.右键零件&#xff0c;然后编辑材料&#xff0c;给他赋予你需要的…

RapidJSON介绍

1.简介 RapidJSON 是一个 C 的 JSON 解析库&#xff0c;由腾讯开源。 支持 SAX 和 DOM 风格的 API&#xff0c;并且可以解析、生成和查询 JSON 数据。RapidJSON 快。它的性能可与strlen() 相比。可支持 SSE2/SSE4.2 加速。RapidJSON 独立。它不依赖于 BOOST 等外部库。它甚至…

ubuntu20安装colmap

系统环境 ubuntu20 &#xff0c;cuda11.8 &#xff0c;也安装了anaconda。因为根据colmap的官方文档说的&#xff0c;如果根据apt-get安装的话&#xff0c;默认是非cuda版本的&#xff0c;而我觉得既然都安装了cuda11.8了&#xff0c;自然也要安装cuda版本的colmap。 安装步骤…

力扣hot100:543. 二叉树的直径/108. 将有序数组转换为二叉搜索树

一、543. 二叉树的直径 LeetCode&#xff1a;543. 二叉树的直径 二叉树的直径 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。 遇到二叉树的问题很容易去直接用求解的目标去定义递归函数。但是仔细考虑&#xff0c;返回树的直径并不能向上传播。因此我们可以拆…

Git同步代码

Git中5个区&#xff0c;和具体操作&#xff1f; 代码提交和同步代码 代码撤销和撤销同步 平时是怎么提交代码的&#xff1f; 第零步: 工作区与仓库保持一致第一步: 文件增删改&#xff0c;变为已修改状态第二步: git add &#xff0c;变为已暂存状态 $ git status $ git a…

HCIP的学习(OSPF总篇)

HCIA的复习 这边可以与我之前写的HCIA博客结合起来一起看&#xff0c;效果更好 HCIA的学习&#xff08;6&#xff09; OSPF状态机 down—关闭-----一旦启动OSPF进程&#xff0c;并发出hello报文&#xff0c;则进入下一个状态init----初始化状态------当收到的hello报文中存在…

临时邮箱API发送邮件的安全性?如何保障?

临时邮箱API发送邮件的步骤有哪些&#xff1f;设置邮箱API方法&#xff1f; 电子邮件作为一种重要的通信方式&#xff0c;而临时邮箱API作为一种新兴的邮件发送技术&#xff0c;其安全性更是成为大家关注的焦点。那么&#xff0c;临时邮箱API发送邮件的安全性究竟如何呢&#…

leetcode-括号生成-101

题目要求 思路 1.左括号的数量等于右括号的数量等于n作为判出条件&#xff0c;将结果存到res中 2.递归有两种&#xff0c;一种是增加左括号&#xff0c;一种是增加右括号&#xff0c;只要左括号的数量不超过n&#xff0c;就走增加左括号的递归&#xff0c;右括号的数量只要小于…

Qt :信号与槽

信号与槽 信号介绍connect 函数使用connect 函数传参问题 定义槽&#xff08;solt&#xff09;函数方法一方法二 定义信号关键字 signals、emit 定义带参数的信号和槽参数个数不一致问题断开信号和槽的连接 disconnect lambda 表达式 信号介绍 Qt 中&#xff0c;信号会涉及三个…

装饰器模式-原理分析以及动手练习

目录 应用场景涉及的角色和类&#xff08;个人理解&#xff09;涉及的角色组件&#xff08;标准&#xff09;基本实现 Demo&#xff08;可以直接 copy 跑一下看效果&#xff09;自己动手实战需求参考答案 相关话题参考文章 应用场景 需要给一个现有类添加附加功能&#xff0c;…

北京车展现场体验商汤DriveAGI自动驾驶大模型展现认知驱动新境界

在2024年北京国际汽车展的舞台上&#xff0c;众多国产车型纷纷亮相&#xff0c;各自展示着独特的魅力。其中&#xff0c;小米SUV7以其精美的外观设计和宽敞的车内空间&#xff0c;吸引了无数目光&#xff0c;成为本届车展上当之无愧的明星。然而&#xff0c;车辆的魅力并不仅限…

数据库系统理论——绪论

文章目录 前言一、数据库四个基本概念1、数据2、数据库3、数据库管理系统&#xff08;DBMS&#xff09;4、数据库系统&#xff08;DBS&#xff09; 二、数据模型1、概念数据模型2、逻辑数据模型3、物理数据模型 三、三级模式1、图片解析2、二级映像 前言 最近很长时间没更新学…

皮秒激光切割机可以切割材料及主要应用行业

皮秒激光切割机可以切割多种材料&#xff0c;主要应用行业包括但不限于&#xff1a; 1. PCB板行业&#xff1a;主要用于PCB激光分板&#xff0c;如FR4、补强钢片、FPC、软硬结合板、玻纤板等材料的紫外激光切割。 2. 薄膜材料切割&#xff1a;皮秒紫外激光切割机可以直接切割薄…

无法添加以供审核,提交以供审核时遇到意外错误。如果问题仍然存在,请联系我们

遇到问题&#xff1a; 无法添加以供审核 要开始审核流程&#xff0c;必须提供以下项目&#xff1a; 提交以供审核时遇到意外错误。如果问题仍然存在&#xff0c;请联系我们。 解决办法&#xff1a; 修改备案号为小写&#xff0c; 例如&#xff1a;京ICP备2023013223号-2A 改…

选择了软件测试,你后悔吗?

记得在求职的时候&#xff0c;面试官经常问我&#xff1a;“为什么要选择软件测试工作?”而我也会经常说一堆自己有的没的优势去应付。 工作这么久了&#xff0c;也不再浮躁&#xff0c;静下心来回忆当初选择软件测试工作的历程&#xff0c;也是对自己职业生涯的一次回顾。 下…

初始Linux(基础命令)

前言&#xff1a; 我们不能总沉浸在编程语言中&#xff0c;虽然代码能力提升了&#xff0c;但是也只是开胃小菜。我们要朝着更高的方向发展。 最近小编一直在刷力扣&#xff0c;以至于博客更新的比较少。今天就带各位开始学习全新的知识——Linux.至于为啥要学&#xff1f; Lin…

[正则表达式]正则表达式语法与运用(Regular Expression, Regex)

0. 在线工具 RegExr: Learn, Build, & Test RegEx 1. 场景列举 vim Linux命令行 sublime 编辑器 java、python等语言中 ... ... 不同场景、不同版本语法可能不一样 2. 以下示例数据与基本语法 &2024 &As20242024# 2024sA#abdcefgha_bdcefghABASDSADAASDASD…

MySQL之聚合函数与应用

1. 前言 上文我们讲到了单行函数.实际上SQL还有一类叫做聚合函数, 它是对一组数组进行汇总的函数, 输入的是一组数据的集合, 输出的是单个值. 2. 聚合函数 用于处理一组数据, 并对一组数据返回一个值. 有如下几种聚合函数 : AVG(), SUM(), MAX(), MIN(), COUNT(). 3. AVG(…

[蓝桥杯]真题讲解:班级活动(贪心)

[蓝桥杯]真题讲解&#xff1a;班级活动&#xff08;贪心&#xff09; 一、视频讲解二、正解代码1、C2、python33、Java 一、视频讲解 [蓝桥杯]真题讲解&#xff1a;班级活动&#xff08;贪心&#xff09; 二、正解代码 1、C #include<bits/stdc.h> using namespace st…

28.leetcode---前K个高频单词(Java版)

题目链接: https://leetcode.cn/problems/top-k-frequent-words/description/ 题解: 代码: 测试: