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

news2024/11/26 10:41:12

魔术方法的使用

在这里插入图片描述

案例体验

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)抽象类的作用

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

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

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

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

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

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

相关文章

入门视频剪辑:视频合并不再难,批量嵌套合并的简单步骤

在数字媒体时代&#xff0c;视频剪辑已成为一项基本技能。无论是制作家庭电影、公司宣传片还是在线教育内容&#xff0c;视频剪辑都扮演着重要角色。对于初学者来说&#xff0c;视频剪辑可能看起来有些复杂&#xff0c;但掌握了正确的步骤和技巧后&#xff0c;你会发现它其实并…

【资源分享】PyCharm2020安装教程

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验&#xff0c;帮助大家尽早适应研究生生活&#xff0c;尽快了解科研的本质。祝一切顺利&#xff01;—…

了解外汇震荡类货币对特征与交易策略

外汇市场是全球最大的金融市场&#xff0c;每天的交易量超过6万亿美元。在这个市场上&#xff0c;货币对之间的价格变动反映了全球经济和政治动态。外汇货币对通常被分为三类&#xff1a;主要货币对、次要货币对和外来货币对。而在交易这些货币对时&#xff0c;市场表现通常分为…

MATLAB实现遗传算法优化同时取送货的车辆路径问题VRPSDP

同时取送货的车辆路径问题VRPSDP的数学模型如下: 模型假设 所有车辆的载重、容量等性能相同。每个客户的需求&#xff08;送货和取货量&#xff09;是已知的&#xff0c;且在服务过程中不会改变。车辆的行驶速度恒定&#xff0c;不考虑交通拥堵等实时路况变化。每个客户点只能…

记录一个RSA加密js逆向

network调试就不说了吧 pwd加密参数 搜索pwd参数定位逆向 可以看到有很多关键词 但是我们细心的朋友会发现加密函数关键字 encrypte 打上断点 调试 发现在断点处停止了 并且框选函数发现了一串加密值 虽然不一样但是大概率是这个 并且没你每次放置移开都会刷新 所以如果这个就是…

IP地址定位技术在网络安全中的作用

在当今数字化时代&#xff0c;网络安全已经成为企业、政府和个人面临的重要挑战之一。随着互联网的普及和网络攻击的增加&#xff0c;保护个人隐私和防止网络犯罪变得尤为重要。在这一背景下&#xff0c;IP地址定位技术作为网络安全的重要组成部分之一&#xff0c;发挥着关键作…

citylava:城市场景中VLMs的有效微调

citylava:城市场景中VLMs的有效微调 摘要IntroductionRelated WorkVision-Language ModelsVLMs in Driving Methodology CityLLaVA: Efficient Fine-Tuning for VLMs in City Scenario 摘要 在城市广阔且动态的场景中&#xff0c;交通安全描述与分析在从保险检查到事故预防的各…

C++——list和string

list与string 前言一、listlist.hList的节点类List的迭代器类list类list.h 完整实现 list.cppList的节点类List的迭代器类list类list.cpp 完整实现 二、stringstring.hstring.cpp 总结 前言 C容器的学习开始啦&#xff01; 大家先来学习list&#xff01; 紧接着string和vector…

如何查看打包后的jar包启动方法

背景 有时候我们在引用一个jar包的时候,想查看一个jar包的结构,这时候查看启动类就比较重要,因为一些关键配置是在启动类上的,这里教大家如何查看这个启动类(springboot项目) 步骤 首先打开jar包预览结构,可以使用解压缩工具直接双击打开或者预览结构 打开路径 META-INF/MA…

《挑战100个产品拆解:抖音》

抖音&#xff0c;作为当今社交媒体领域的明星产品&#xff0c;其背后的产品思维一直备受关注。在这篇文章中&#xff0c;我们将深入拆解抖音的产品思维&#xff0c;揭示其成功的秘密。 产品定位 1.产品是什么样的用户&#xff1a; 年轻人和青少年是抖音的主要用户群体。抖音…

Agent AI智能体:塑造未来社会的智慧力量

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 &#x1f916; Agent AI智能体&#xff1a;塑造未来社会的智慧力量&#x1f3af; 引言&#x1f331; 智能体的未来角色预览&#x1f4bc; 行业革新者&#x1f31f; 创意合作者&#x1f6e1;️ 公共安全与环保&#x1f680; …

pycharm code行太长显示波浪线取消

实际操作如下&#xff1a;个人比较合适的位置为160,180时有点多 效果&#xff1a;

演唱会新风:允许部分歌手闭麦,让观众先唱

演唱会市场的热度从2023年延续至今&#xff0c;出现了一些“倒反天罡”的现象。 例如&#xff1a;让歌迷在台下给歌手唱歌。 5月6日抖音娱乐榜第一的消息是“第一次见辟谣观众没假唱的”。原因是凤凰传奇在常州和北京鸟巢先后举办两场演唱会&#xff0c;其中鸟巢演唱会被认为…

嵌入式C语言高级教程:实现基于STM32的人工智能语音识别系统

在嵌入式系统中实现语音识别技术可以极大地增强设备的交互性。本教程将指导您如何在STM32微控制器上使用TensorFlow Lite for Microcontrollers实现基本的语音识别功能。 一、开发环境准备 硬件要求 微控制器&#xff1a;STM32F746NG&#xff0c;支持足够的运算能力和内存来…

【接地故障保护】剩余电流继电器及监控产品解决方案

安科瑞电气股份有限公司 祁洁 15000363176 一、产品型号 二、产品功能 1、对直接接触电击事故的防护 对直接接触电击事故的防护中&#xff0c;剩余电流继电器&#xff08;RCD&#xff09;只作为直接接触电击事故基本防护措施的补充保护措施&#xff08;不包括对相与相、相…

机器学习:人工智能中实现自动化决策与精细优化的核心驱动力

&#x1f512;文章目录: &#x1f4a5;1.概述 ❤️2.机器学习基本原理 &#x1f6e4;️2.1定义与关键概念 &#x1f6e3;️2.2 机器学习算法 ☔3.自动化决策中的机器学习应用 &#x1f6b2;4.精细优化与机器学习的结合 &#x1f44a;5.挑战与前景 &#x1f4a5;1.概述 …

多个glibc库存在时如何查看ldd调用的哪个

但是发现存在多个版本的glibc版本&#xff0c;需要查看具体的库的信息&#xff0c;和相应的关键函数的信息&#xff0c;但是并不知道具体的libc.so.6的路径信息 rootalg-dev04:~/xingqiao# ldd --version ldd (GNU libc) 2.29 rootalg-dev04:/opt# which ldd /usr/local/bin/…

刷代码随想录有感(59):二叉搜索树的最近公共祖先

题干&#xff1a; 代码&#xff1a; class Solution {递归实现 public:TreeNode* traversal(TreeNode* root, TreeNode* p, TreeNode* q){if(root NULL)return NULL;if(root->val > p->val && root->val > q->val){TreeNode* left traversal(root…

Windows 10 中使用 Montreal-Forced-Aligner (MFA) 实现音频和文本强制对齐

文章目录 一、实现目标二、安装 Montreal-Forced-Aligner1、使用 Anaconda 虚拟环境2、修改默认下载路径3、安装 montreal-forced-aligner 及相关第三方包4、验证是否安装成功 三、下载声学模型和发音词典1、命令行方式下载2、手动方式下载 四、强制对齐1、准备音频及对应文本2…

sql查询数据语句

select * from 表名 where 列名 某个数据名字 查询某个表名中的某列是否有某个数据