面向对象(上)

1.初始对象

学习目标:理解使用对象完成数据组织的思路

可以看到加入了登记表后,我们学生所提供的信息就组织的简洁明了

程序中也是有多种多样的方式来记录数据

思考:使用变量记录数据太乱了,如果程序中也和生活中一样:可以设计表格,可以将设计的表格打印出来,可以将打印好的表格供人填写内容,那么数据的组织就非常方便了

将它与我们生活中填写表格做对比

# 1.设计一个类(类比生活中:设计一张登记表)
class Student:name = None         # 记录学生姓名gender = None       # 记录学生性别nationality = None  # 记录学生国籍native_place = None # 记录学生籍贯age = None          # 记录学生年龄# 2,创建一个对象(类比生活中:打印一张登记表)
stu_1 = Student()
# 3.对象属性进行赋值(类比生活中:填写表单)
stu_1.name = "ikun"
stu_1.gender = "男"
stu_1.nationality = "中国"
stu_1.native_place = "山东省"
stu_1.age = 31# 4.获取对象中记录的信息
print(stu_1.name)
print(stu_1.gender)
print(stu_1.nationality)
print(stu_1.native_place)
print(stu_1.age)

总体思路是:设计一个类,基于类去创建一个对象,以及通过对象来维护组织数据

优点在于:更加高效,更加的简洁明了

2.成员变量

学习目标:掌握类的定义和使用语法,掌握成员方法的使用,掌握self关键字的作用

就是把类分为:属性(数据),行为(函数)

从今天开始,定义在类内部的函数,称它们为方法,也就是以后提到函数默认它是在函数外部,提到方法就是默认在类内部的函数

一旦在pycharm的类中输入函数,就会默认添加self,self必须要出现在传参的列表中,不管用它都得有。如果想要在成员方法中去访问成员变量,那么需要带上self通过它然后写上一个点,才能访问变量。

注意因为msg是外部参数,所以不用加self

3.类和对象

学习目标:掌握使用类描述现实世界事物的思想,掌握类和对象的关系,理解什么是面向对象

现实世界的事物也有属性和行为,类也有属性和行为。使用程序中的类,可以完美的描述现实世界的事物

类是程序中的设计图纸,对象是基于图纸生产的具体实体

这就是面向对象编程:设计类、基于类创建对象、由对象做具体的工作

import winsound
winsound.Beep(2000,3000)

这段代码可以让电脑发出响声

可以听到闹钟响铃了

想构建多少个类对象都可以,没有限制

面向对象编程就是使用对象进行编程,即设计类,基于类创建对象,并使用对象来完成具体的工作

4.构造方法

学习目标:掌握使用构造方法向成员变量赋值

思考:Student()

这个括号,能否像函数(方法)那样,通过传参的形式对属性赋值呢?

可以,需要使用构造方法:__init__()

构建方法的作用:

·构建类对象的时候会自动运行

·构建类对象的传参会传递给构造方法,借此特性可以给成员变量赋值

这一部分可以省略,首先这一部分表示定义变量,然后后面是赋值,如果省略后面就代表定义变量

小练习

class Student:name = Noneage = Noneaddress = Nonedef __init__(self,name,age,address):self.name = nameself.age = ageself.address = address
i = 0
for x in range(1,11):i += 1print(f"当前录入第{i}位学生信息,总共需要录入10位学生信息")stu = Student(input("请输入学生姓名:"), input("请输入学生年龄:"), input("请输入学生地址:"))print(f"学生{i}信息录入完成,信息为:【学生姓名:{stu.name},年龄:{stu.age},地址:{stu.address}】")

5.其他内置方法

学习目标:掌握几种常见的类内置方法

魔术方法有很多,给大家列举了几个较为常见的

在python中,像这种被四个下划线包围的方法,我们可以称它们为魔术方法

__str__字符串方法

就是说如果你需要把这个类对象变为字符串,它就通过魔术方法的形式去获得要变成什么样的字符串,如果你不写它就直接输出内存地址,如果你写了就按照你写的形式去提供,就是让我们自己来决定输出什么内容。

__lt__小于符号比较方法

就是用来比较大小,可以用来比较小于自然大于也可以

__le__小于等于比较符号方法

可以用于小于等于或大于等于,和__lt__一样就是多了个等于

小于大于不可以

等于可以

__eq__比较运算符实现方法

就是进行相等判断

==符号,如果你没有使用__eq__这个魔术方法,那么等等符号他就默认比较内存地址,那既然是比较内存地址的话,我们是两个独立的对象,那肯定结果都是False

我们可以规定它的标准,就比如说规定年龄相等就是相等,或者是姓名相等就是相等

总结:

__init__  构造方法,可用于创建类对象的时候设置初始化行为

__str__   用于实现类对象转字符串的行为

__lt__     用于2个类对象进行小于或大于比较

__le__    用于2个类对象进行小于等于或大于等于比较

__eq__    用于2个类对象进行相等比较

6.封装

学习目标:理解封装的概念,掌握私有成员的使用

面向对象的三大特性:

面向对象编程,是许多编程语言都支持的一种编程思想。

简单理解是:基于模板(类)去创建实体(对象),使用对象完成功能开发

面向对象包含三大主要特性:封装,继承,多态

封装表示的是,将现实世界事物的:属性,行为,封装到类中,描述为:成员变量,成员方法,从而完成程序对现实世界事物的描述

就比如手机中,也存在对用户开放的属性和行为,以及对用户隐藏的属性和行为,像这些对用户隐藏的,我们用户是无法使用的

程序中也是,对于私有成员,用户也无法使用

使用私有方法和私有变量,都会报错


class Phone: __current_voltage = 0.5 # 当前手机运行电压 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:# 提供私有成员变量:__is_5g_enable__is_5g_enable = True  # 5g状态# 提供私有成员方法:__check_5g()def __check_5g(self):if self.__is_5g_enable:print("5g开启")else:print("5g关闭,使用4g网络")# 提供公开成员方法:call_by_5g()def call_by_5g(self):self.__check_5g()print("正在通话中")
phone = Phone()
phone.call_by_5g()

就是相当于对于用户使用手机,用户只需要打电话就可以了,但是打电话前需要检测网络,这些检测交给我们私有成员完成就可以了,不需要用户再去检测。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux - 动静态库

文章目录 一、静态库1、定义2、文件扩展名3、生成静态库4、使用静态库5、静态库的优缺点 二、动态库1、定义2、文件扩展名3、生成动态库4、使用动态库5、动态库的优缺点6、简单动态库加载 三、补充 一、静态库 1、定义 静态库是在编译时链接到最终的可执行文件中的库。这意味着…

Java Web项目实战:从零基础到项目开发全流程

Java Web开发环境搭建 Java Web开发需要Java运行环境、IDE(如IntelliJ IDEA或Eclipse)以及Maven集成开发工具等。首先,确保电脑上安装有Java 8或更高版本,可以通过访问Java官网获取最新版本。其次,安装IDE&#xff0c…

深入理解跳出率:如何利用百度统计优化网站用户体验

在数字营销的世界中,跳出率是一个关键指标,它衡量了用户对网站的第一印象和内容的吸引力。最近,我在分析我的网站数据时发现,跳出率常常高达100%,这促使我深入研究了跳出率的含义和影响因素。 跳出率的定义与计算 跳…

AndroidStudio Koala更改jdk版本 2024-1-2

升级android studio版本到 AndroidStudio Koala之后,发现修改jdk版本的方式不同了。如下: 修改jdk版本

《Python网络安全项目实战》

《Python网络安全项目实战》 项目1 Python 环境安装任务1.1 Windows上安装Python任务1.2 Ubuntu环境下安装Python 项目2 Python基础练习任务2.1 使用数据类型任务2.2 使用组合数据类型任务2.3 使用控制结构任务2.4 使用函数任务2.5 使用模块 项目3 处理文件中的数据任务3.1 读文…

Ajax:XMLHttpRequest

Ajax:XMLHttpRequest XMLHttpRequestgeturlpost 数据交换格式XMLjson XMLHttpRequest Level 2请求时限表单数据操纵文件上传 XMLHttpRequest XMLHttpRequest简称 xhr,是浏览器提供的 Javascript 对象,通过它可以请求服务器上的数据资源。 jQ…

如何在vscode中使用鼠标滑轮滚动来改变字体大小

实现内容:如何在vscode中使用鼠标滑轮滚动来改变字体大小 使用场景:我是在Ubuntu中安装的vscode 需求:因为最近在用这个,但是在使用过程中发现vscode的字体大小有点小,所以想改变下 实现滚轮滑动改变字体大小的具体步…

Spring Boot框架下的酒店住宿登记系统

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

2024 7月算法刷题记录

小米真题 手机流畅运行的秘密 时间限制:1.000S 空间限制:256MB 题目描述 8 月份发布会一结束,米小兔就在公司领到了一台最新发布的 Xiaomi MIX Fold 3 手机,这是一款小米旗舰折叠屏手机,并搭载了全新升级架构的 MI…

Redis 线程控制 总结

前言 相关系列 《Redis & 目录》(持续更新)《Redis & 线程控制 & 源码》(学习过程/多有漏误/仅作参考/不再更新)《Redis & 线程控制 & 总结》(学习总结/最新最准/持续更新)《Redis &a…

架构师备考-数据库设计、实施和维护

数据库设计 数据库设计的任务是针对一个给定的应用环境,在给定的硬件环境和操作系统及数据库管理系统等软件环境下,创建一个性能良好的数据库模式,建立数据库及其应用系统,使之能有效地存储和管理数据,满足各类用户的需…

Node.js 模块化

1. 介绍 1.1 什么是模块化与模块 ? 将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为 模块化其中拆分出的 每个文件就是一个模块 ,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他模块使用 1.2 什…

Stable Diffusion视频插件Ebsynth Utility使用方法

在Stable Diffusion中安装完Ebsynth Utility后,就可以开始试用了。 启动Stable Diffusion后,出面画面: 1、步骤1:视频分帧及生成蒙板帧 填入工程目录,选择上传所用的视频文件:注意对目录命名的要求-不能有…

尽管加密货币被禁,中国仍是比特币挖矿巨头!不过主导地位正在转向美国?

尽管中国政府全面禁止了加密货币交易和挖矿活动,但中国依然在比特币挖矿领域保持着全球领先地位。然而,随着美国在该领域的快速崛起,中国在比特币挖矿主导地位方面正面临来自美国的强劲竞争。根据最新的市场数据和行业分析,中国的…

华为:高级ACL 特定ip访问特定ip命令

网络拓扑图: 网络环境: 全网互通即可 1.创建一个名为test的高级ACL acl name test advance 2.添加规则 ##拒绝所有ip访问 rule 10 deny ip source any destination 192.168.1.10 0.0.0.0 只允许特定ip访问特定ip rule 5 permit ip source 192.168.2.10…

计算机网络:网络层 —— IPv4 地址的应用规划

文章目录 IPv4地址的应用规划定长的子网掩码变长的子网掩码 IPv4地址的应用规划 IPv4地址的应用规划是指将给定的 IPv4地址块 (或分类网络)划分成若干个更小的地址块(或子网),并将这些地址块(或子网)分配给互联网中的不同网络,进而可以给各网络中的主机…

Oracle CONNECT BY、PRIOR和START WITH关键字详解

Oracle CONNECT BY、PRIOR和START WITH关键字详解 1. 基本概念2. 数据示例3. SQL示例3.1. 查询所有员工及其上级3.2. 显示层次结构3.3. 查询特定员工的子级 4. 结论 在Oracle数据库中,CONNECT BY、PRIOR和START WITH关键字主要用于处理层次结构数据,例如…

web3对象如何连接以太网络节点

实例化web3对象 当我们实例化web3对象,我们一般开始用本地址,如下 import Web3 from web3 var web3 new Web3(Web3.givenProvider || ws://localhost:5173)我们要和以太网进行交互,所以我们要将’ws://localhost:5173’的本地地址换成以太…

循序渐进丨openGauss / MogDB 数据库内存占用相关SQL

一、内存总体分布 数据库总体内存使用分布 select * from gs_total_memory_detail; 当dynamic_used_memory大于max_dynamic_memory就会报内存不足;如果此时dynamic_used_memory小于max_dynamic_memory,而dynamic_peak_memory大于max_dynamic_memory表…

《皮革制作与环保科技》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问:《皮革制作与环保科技》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《皮革制作与环保科技》级别? 答:国家级。主管单位:中国轻工业联合会 …