python入门篇11-面向对象的基础使用

全文目录,一步到位

  • 1.前言简介
    • 1.1 专栏传送门
      • 1.1.1 上文小总结
      • 1.1.2 上文传送门
  • 2. python基础使用
    • 2.1 面向对象的基础使用
      • 2.1.1 创建类
      • 2.1.2 使用对象(定义`成员变量`)
      • 2.1.3 `成员方法`的定义与使用
      • 2.1.4 `构造方法`的使用
      • 2.1.5 常用魔术方法
    • 2.2 面向对象思想核心
      • 2.2.1 面向对象_私有成员
      • 2.2.2 复写
      • 2.2.3 继承
      • 2.2.4 多态
    • 2.3 python变量的类型注解
      • 2.3.1
      • 2.3.2
  • 3. 基础语法总结案例
    • 3.1 用面向对象思想 设计一个闹钟
      • 3.1.1 创建闹钟的实体类对象
      • 3.1.2 创建 赋值并使用闹钟功能
    • 3.2
      • 3.2.1
      • 3.2.2
  • 4. 文章的总结与预告
    • 4.1 本文总结
    • 4.2 下文预告


1.前言简介

1.1 专栏传送门

1.1.1 上文小总结

1.1.2 上文传送门

2. python基础使用

2.1 面向对象的基础使用

2.1.1 创建类

class关键字修饰

  • 类名首字母大写
  • 属性名 = None
class Student:username = Noneage = Nonegender = Nonephone = Noneemail = None

2.1.2 使用对象(定义成员变量)

student = Student()即可 java是new对象初始化
属性赋值是 对象.属性 =

# 2. 创建一个对象
student = Student()# 3. 对象属性进行赋值
student.username = "张三"
student.age = "20"
student.gender = "男"
student.phone = "13345678910"
student.email = "123456@qq.com"print(student.username)
print(student.age)
print(student.gender)
print(student.phone)
print(student.email)

2.1.3 成员方法的定义与使用

关键字 def , 默认生成一个self关键字 跟this一样 指代当前对象

class Student:id = Noneusername = Noneage = Nonegender = Nonephone = Noneemail = Nonedef introduce_myself(self):"""自我介绍:return:"""print(f"你好,我是{self.username},年龄{self.age},性别是{self.gender},手机号是:{self.phone},邮箱是:{self.email}")def introduce_hobby(self, msg):"""爱好介绍:return:"""print(f"你好,我是{self.username},我的爱好是:{msg}")

案例使用: 创建对象 赋值并使用成员方法

# 使用对象
student = Student()# 3. 对象属性进行赋值
student.id = 1
student.username = "张三"
student.age = "20"
student.gender = "男"
student.phone = "13345678910"
student.email = "123456@qq.com"student1 = Student()
student1.id = 2
student1.username = "李四"
student1.age = "25"
student1.gender = "女"
student1.phone = "13345678911"
student1.email = "145689@qq.com"student.introduce_myself()
student1.introduce_hobby("唱跳rap,篮球")

2.1.4 构造方法的使用

注意看 2.1.1 与这个写法区别 可以不写成员属性, 直接在构造方法中写
java不可以的呦~~

class Student:# id = None# username = None# age = None# gender = None# phone = None# email = Nonedef __init__(self, id, username, age, gender, phone, email):self.id = idself.username = usernameself.age = ageself.gender = genderself.phone = phoneself.email = emailprint("构造方法执行成功")

案例使用测试

for i in range(10):username = input("请输入用户名: \n")age = input("请输入年龄: \n")sex = input("请输入性别: \n")phone = input("请输入电话号: \n")email = input("请输入邮箱: \n")student = Student(i, username, age, sex, phone, email)print(f"第{i + 1}名学生录入成功", "")print(f"你好,我是{student.username},年龄{student.age},性别是{student.gender},手机号是:{student.phone},邮箱是:{student.email}")

2.1.5 常用魔术方法

__init__: 构造方法
__str__: 不加这个就是内存地址 加了str的魔术方法 返回的就是return信息
__lt__: (>,=,<) 任意类型比较
__le__: >=,<=
__eq__: ==
还有很多, 如图:
在这里插入图片描述

class Student:def __init__(self, id, username, age):self.id = idself.username = usernameself.age = agedef __str__(self):"""不加这个就是内存地址 加了str的魔术方法 返回的就是return信息:return:"""return f"student对象,id是:{self.id}name:{self.username}"def __lt__(self, other):"""任意选择一个属性进行类对象进行对比(>,=,<)  不写这个比较会报错的:param other::return:"""return self.age < other.agedef __le__(self, other):""">=,<=:param other::return:"""return self.age <= other.agedef __eq__(self, other):"""不写比较的是地址:param other::return:"""return self.age == other.age

案例使用测试

# 区别对比
# 不加__str__()方法 <__main__.Student object at 0x0000021E508FFFD0>
# 加__str__()方法 student对象,id是:1name:张三
stu = Student(1, "张三", 20)
print(stu)
print(str(stu))# __lt__()
stu1 = Student(2, "李四", 25)
print(stu > stu1)  # False# le
stu2 = Student(3, "王五", 25)
print(stu1 <= stu2)  # True# eq
print(stu1 == stu2)  # True

2.2 面向对象思想核心

java/python都是 封装继承 多态三大基本特性
有的会说四大特性: 抽象 abstract

2.2.1 面向对象_私有成员

java的private
__修饰
私有属性和方法
建立成员方法对外暴露
对象使用可使用成员方法

  • 定义一个类 内含私有成员变量和私有成员方法
class Phone:__current_voltage = 0  # 当前手机的运行电压def __keep_single_core(self):print("进入超级省电模式")def call_by_5g(self):if self.__current_voltage >= 1:print("功能正常使用!")else:self.__keep_single_core()print("电量过低, 不可使用此功能")

案例使用测试
phone = Phone()
phone.call_by_5g() 运行正常
ps: 特别注意:
直接使用private方法, 会报错
phone.__keep_single_core()
报错信息: # AttributeError: ‘Phone’ object has no attribute ‘__keep_single_core’. Did you mean: ‘_Phone__keep_single_core’ ?

2.2.2 复写

父类成员属性的重新赋值 叫属性复写
父类成员方法的重新定义 叫方法复写

class BasePhone:IMEI = None  # 序列号producer = 'ANDROD'  # 品牌def call_by_4g(self):print("手机4g基础功能开启!")class UpPhone(BasePhone):IMEI = "aaabbbccc123456"  # 序列号face_id = "123456"producer = 'UPONE'  # 品牌def call_by_4g(self):print("手机4g暂停维护!")def call_by_5g(self):print("手机开启5g功能, 对应功耗增加")

2.2.3 继承

配合2.1.2使用
java是单继承(extend)多实现(implement)
python既可以单继承 也可以 多继承

  • 关键字pass 没有特殊意义 占位(防止语法错误)
  • 直接看代码吧
class BasePhone:IMEI = None  # 序列号producer = 'ANDROD'  # 品牌def call_by_4g(self):print("手机4g基础功能开启!")class UpPhone(BasePhone):face_id = "123456"producer = 'UPONE'  # 品牌def call_by_4g(self):print(f"{self.producer}手机4g暂停维护!")def call_by_5g(self):print(f"手机基础系统:{super().producer}")super().call_by_4g()print("手机开启5g功能, 对应功耗增加")class NFCReader:nfc_type = "门禁"def open_by_nfc(self):print(f"nfc功能启动, 类型:{self.nfc_type}")class RemoteControl:rc_type = "红外遥控"def start_rc_control(self):print("开启红外遥控")class MyPhone(UpPhone, NFCReader, RemoteControl):IMEI = "123456"def call_by_4g(self):UpPhone.call_by_5g(self)print(f"UpPhone的4g最新公告来袭~~~")print(f"{UpPhone.producer}手机通信重新升级, 4g+模式, 快人一步")pass  # 补全功能 不报语法错误

案例使用测试

  • 测试继承和复写
phone = MyPhone()
print(phone.producer)
print(phone.IMEI)
phone.call_by_4g()
phone.call_by_5g()
phone.open_by_nfc()
phone.start_rc_control()
  • 复写并要查找父类功能
    phone = MyPhone()
    phone.call_by_4g()

2.2.4 多态

多态解释:

  • 同一个行为可以有多个不同表现形式的能力

抽象类: 含有抽象方法的类
抽象方法: 方法体是空实现的(pass) 称之为抽象方法
抽象类建成后 里面装满要求
子类继承后根据要求自己完善功能
传入不同对象执行不同结果

[理解: 跟一个使用规范差不多, 必须实现的功能说明, 具体怎么实现不管, 类似甲方]
# 同一行为 不同对象使用 获得不同装填  学校都有这些行为
class AbstractSchool01:def class_begin(self):print("-> 上课 <-")passdef class_over(self):print("-> 下课 <-")passdef after_school(self):print("-> 放学 <-")# A学校复写功能
class ASchool(AbstractSchool01):def class_begin(self):print("-> A学校-上课 <-")passdef class_over(self):print("-> A学校-下课 <-")passdef after_school(self):print("-> A学校-放学 <-")# B学校复写功能
class BSchool(AbstractSchool01):def class_begin(self):print("-> B学校-上课 <-")passdef class_over(self):print("-> B学校-下课 <-")passdef after_school(self):print("-> B学校-放学 <-")def choose_school(school: AbstractSchool01):school.class_begin()school.class_over()school.after_school()
choose_school(ASchool())
choose_school(BSchool())

2.3 python变量的类型注解

2.3.1


2.3.2

3. 基础语法总结案例

3.1 用面向对象思想 设计一个闹钟

包含价格, 主键id和功能

3.1.1 创建闹钟的实体类对象

一般与数据库字段对应

class Clock:id = Noneprice = Nonedef ring(self):import winsoundwinsound.Beep(366, 500)winsound.Beep(500, 150)winsound.Beep(800, 100)winsound.Beep(400, 160)winsound.Beep(600, 100)winsound.Beep(600, 100)winsound.Beep(400, 160)winsound.Beep(700, 150)winsound.Beep(200, 100)winsound.Beep(366, 500)

3.1.2 创建 赋值并使用闹钟功能

clock = Clock()
clock.id = 1
clock.price = 20
print(f"闹钟id:{clock.id}, 价格是:{clock.price}, 响~~~")
clock.ring()clock1 = Clock()
clock1.id = 1
clock1.price = 20
print(f"闹钟id:{clock.id}, 价格是:{clock.price}, 响~~~")
clock1.ring()

3.2

3.2.1

3.2.2

4. 文章的总结与预告

4.1 本文总结

4.2 下文预告



作者pingzhuyan 感谢观看

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

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

相关文章

立体视觉几何 (三)

立体视觉系统概述 误差分析 考虑对应于深度 Z 的视差 d 的匹配对。我们想要评估 ΔZ&#xff0c;即视差误差引起的深度误差。将 Z 对 d 求导&#xff0c;得到&#xff1a; 立体视觉中基线&#xff08;baseline&#xff09;、焦距&#xff08;focal length&#xff09;和立体重…

游泳时可以听歌的耳机有哪些?戴游泳耳机有哪些好处?

游泳和跑步在某种程度上相似&#xff0c;特别是在短距离冲刺时&#xff0c;大脑似乎变得空白&#xff0c;而在中长距离的有氧运动中&#xff0c;身体感到疲劳&#xff0c;但大脑却异常清晰&#xff0c;时间却显得格外漫长。如何打发时间&#xff0c;让游泳锻炼变得不无聊&#…

中国电子学会2020年12月份青少年软件编程Scratch图形化等级考试试卷三级真题(编程题)

编程题(共3题&#xff0c;共30分) 36.绘制图形 1. 准备工作: &#xff08;1&#xff09;保留默认小猫角色&#xff0c;隐藏角色&#xff1b; &#xff08;2&#xff09;背景为白色背景。 2. 功能实现: &#xff08;1&#xff09;绘制如下图所示的图案&#xff1b; &…

点云标注工具

目录 3d手势识别 c 3d关键点&#xff0c;Bounding Box Labels Rectangle Labels KITTI 3D Ground Truth Annotator c标注工具 3d手势识别 GitHub - 99xtaewoo/Automated-Hand-3D-pose-annotation-Tool: Automated Hand 3D pose annotation Tool c 3d关键点&#xff0c;Bou…

【办公类-23-02】20240212徐迟《江南小镇(南浔古镇)》“水晶晶”和景物”数量提取66个

作品展示 背景需求&#xff1a; 2024年春节前夕&#xff0c;我与家人前往浙江湖州、南浔旅行。探寻母亲、外婆外公、曾外婆的祖籍南浔的风土人情。在古镇上看到了”著名诗人“徐迟”的介绍。 母亲说&#xff1a;我的姑母就是在南浔读了小学和中学&#xff0c;她小学时的老师就…

机器学习系列——(十三)多项式回归

引言 在机器学习领域&#xff0c;线性回归是一种常见且简单的模型。然而&#xff0c;在某些情况下&#xff0c;变量之间的关系并不是线性的&#xff0c;这时候我们就需要使用多项式回归来建模非线性关系。多项式回归通过引入高次项来扩展线性回归模型&#xff0c;从而更好地拟…

Github 2024-02-12 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-02-12统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Rust项目3Python项目3JavaScript项目1TypeScript项目1C项目1C项目1PowerShell项目1非开发语言项目1 SubQuery…

Elasticsearch:使用查询规则(query rules)进行搜索

在之前的文章 “Elasticsearch 8.10 中引入查询规则 - query rules”&#xff0c;我们详述了如何使用 query rules 来进行搜索。这个交互式笔记本将向你介绍如何使用官方 Elasticsearch Python 客户端来使用查询规则。 你将使用 query rules API 将查询规则存储在 Elasticsearc…

docker之centos7容器常用命令和服务安装

一、前言 以前我们如果想在windows环境下使用linux系统&#xff0c;最早的是一台主机上安装双机系统&#xff0c;再后来我们有了VMware&#xff0c;可以通过workstations虚拟化平台安装虚拟机。现在我们还可以通过docker安装linux容器&#xff0c;容器更轻量也更便捷。不过凡事…

工业级加固平板丨亿道三防平板电脑丨安卓工业平板丨改善车队管理

在现代物流和运输行业中&#xff0c;车队管理是一个复杂而重要的任务。为了更好地管理车队&#xff0c;提高工作效率和减少成本&#xff0c;许多企业正在采用新技术和工具。其中&#xff0c;三防平板电脑作为一种功能强大且适应恶劣环境的设备&#xff0c;已经在车队管理中得到…

C++联合体详解!

个人主页&#xff1a;PingdiGuo_guo 收录专栏&#xff1a;C干货专栏 大家伙新年快乐&#xff0c;今天我们来了解一下C联合体。 文章目录 1.联合体 1.1联合体的概念 1.2联合体的思想 1.3联合体的作用 1.3.1内存优化 1.3.2二进制数据操作 1.3.3类型转换 1.3.4解决特定问…

交叉熵损失函数基本概念及公式

Cross-Entropy Loss 1.二分类2. 对于多类别分类问题&#xff0c;其公式可以表示为&#xff1a;3. 公式深度挖掘解释——交叉熵损失函数公式中&#xff08;log&#xff09;的解释总结 交叉熵损失函数&#xff08;Cross-Entropy Loss&#xff09;是在机器学习和深度学习中常用的一…

Ainx-V0.2-简单的连接封装与业务绑定

&#x1f4d5;作者简介&#xff1a; 过去日记&#xff0c;致力于Java、GoLang,Rust等多种编程语言&#xff0c;热爱技术&#xff0c;喜欢游戏的博主。 &#x1f4d7;本文收录于Ainx系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏Rust初阶教程、go语言基础系列…

【EAI 020】Diffusion Policy: Visuomotor Policy Learning via Action Diffusion

论文标题&#xff1a;Diffusion Policy: Visuomotor Policy Learning via Action Diffusion 论文作者&#xff1a;Cheng Chi, Siyuan Feng, Yilun Du, Zhenjia Xu, Eric Cousineau, Benjamin Burchfiel, Shuran Song 作者单位&#xff1a;Columbia University, Toyota Research…

MATLAB知识点: unique函数 提取数组中的唯一值

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自第3章 3.4.5 集合运算 unique函数可用来提取数组中的唯…

Stable Diffusion 模型下载:majicMIX lux 麦橘辉耀 - V3

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十

算法沉淀——位运算(leetcode真题剖析)

算法沉淀——位运算 常用位运算总结1.基础位运算2.确定一个数中第x位是0还是13.将一个数的第x位改成14.将一个数的第x位改成05.位图6.提取一个数最右边的17.删掉一个数最右边的18.异或运算9.基础例题 力扣题目讲解01.面试题 01.01. 判定字符是否唯一02.丢失的数字03.两整数之和…

LeetCode Python - 11.盛最多水的容器

文章目录 题目答案运行结果 题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&a…

计网day1

RTT&#xff1a;往返传播时延&#xff08;越大&#xff0c;游戏延迟&#xff09; 一.算机网络概念 网络&#xff1a;网样的东西&#xff0c;网状系统 计算机网络&#xff1a;是一个将分散得、具有独立功能的计算机系统&#xff0c;通过通信设备与线路连接起来&#xff0c;由功…

web 前端实现一个根据域名的判断 来显示不同的logo 和不同的标题

1.需求 有可能我做一个后台 web端 我想实现一套代码的逻辑 显示不同的公司主题logo以及内容&#xff0c;但是实际上 业务逻辑一样 2.实现 建一个store oem.ts 这个名为是 oem系统 oem.ts import { defineStore } from pinia;import { store } from /store;const oemDataLis…