Python面向对象基础

文章目录

  • 1. 什么是面向对象
    • 1.1 常见的编程思想
    • 1.2 面向过程是什么
    • 1.3 什么是面向对象
    • 1.4 封装
    • 1.5 继承
    • 1.6 多态
  • 2. 面向对象的概念
    • 2.1 两个重要概念:类和对象
    • 2.2 类
    • 2.3 对象
    • 2.4 self关键字
  • 3. 对象属性
    • 3.1 什么是属性
    • 3.2 类外面访问属性
    • 3.3 类内部获取属性

1. 什么是面向对象

1.1 常见的编程思想

编程思想就是:利用计算机来解决实际编程问题的一种思维方式。而编程思想是通用的,与计算机语言本身没有太大关系。
常见的编程思想有:
(1)面向过程
(2)面向对象
注意:Python同时支持面向过程和面向对象的编程语言!
在这里插入图片描述

1.2 面向过程是什么

面向过程是一种以过程为中心的编程思想。通俗地说,在解决编程问题时,我们会把需要的步骤都列出来,然后按照操作步骤写代码,这种思维就是面向过程思想。
说明:比如,要产生第一个随机数,步骤:
(1)导入random模块
(2)产生随机数
(3)输出结果
使用面向过程思维来了解:使用ATM机取钱的过程。
在这里插入图片描述

(1)带上银行卡,去ATM机所在的地方;
(2)排队等待;
(3)轮到自己了,把银行卡插入ATM机;
(4)输入密码,取钱;
(5)取钱成功。

1.3 什么是面向对象

面向对象是软件开发方法,一种编程范式。面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。

# 学生:姓名、年龄 ;工作、赚钱
# 1. 先定义
class student:def __init__(self, name, age):self.name = nameself.age = agedef work(self):print("好好工作")def money(self):print(f"{self.age}岁的{self.name}在努力赚钱... ...")# 2. 后调用
stu = student("刘向阳",23)
print(stu.name)
print(stu.age)#调用
stu.work()
stu.money()
# 总结:
# 1. 封装后的代码执行后不能立马有效果  ==抽象
# # 2. 一切皆对象:类 ==> 对象
# # 3. 类:包含两部分: 变量、方法

通俗地说,面向对象思想就是:当解决问题的视角不再是详细的操作步骤,而是另一个视角:操作对象。比如:操作手机打电话、操作电脑看电影等。
对象可以是:手机、电脑等一切事物。

面向对象思想优势:

(1)在现实生活中,所有事物都被看作是对象;

(2)面向对象的宗旨:模拟现实世界中的一切事物;

(3)贴近实际生活,给所有对象都赋予属性和方法,更加人性化。

1.4 封装

面向对象的三大特性
(1)封装
(2)继承
(3)多态
在现实生活中,也有很多与封装的案例。
比如,小刘是一个IT公司的程序员。

小刘身边的人了解小刘的隐私内容项
银行柜员身份证号、联系方式、银行卡号等。
同事姓名、职位、性别、年龄等。
爸妈血型、身份证号、女朋友姓名、性别等。

类似的,在Python面向对象中也有封装。
简单地说,封装就是把对象的属性和方法放在一个整体中,并限制对属性和方法的访问操作。而这里说的整体,就是【类】。

class 类名:def 方法名():属性1 = 值1属性2 = 值2...def 方法名2():执行代码1执行代码2...

例如,在下图日常生活中常见的画面,哪些可以封装成一个类?
在这里插入图片描述
一切皆对象

电脑
手机
数据线
...

1.5 继承

在现实生活中,继承一般指的是子女继承父辈的财产,比如:子承父业等。
在这里插入图片描述
类似的,面向对象继承也有继承父类的意思。当子类继承了父类后,子类就具有父类的属性和方法。
说明继承都满足:is-a关系。
在这里插入图片描述

1.6 多态

多态指的是:不同类的对象对同一消息做出不同的响应。这里的发送消息,通常是指调用方法。
通过生活案例来说明什么是多态,比如:电脑键盘上的F12功能键是固定不变的,但完成功能不同。

固定不变的F12功能键完成功能
F12在WPS办公软件使用时,提示用户保存文件。
F12在Notepad++编辑软件使用时,会把工作区间进行全屏显示。
F12在Chrome浏览器使用时,能进入到开发者模式。

2. 面向对象的概念

2.1 两个重要概念:类和对象

要掌握Python面向对象的特性,首先需要了解两个重要概念:类、对象。

我们通过公司职员-张三为例子来解释说明。
在这里插入图片描述
类是抽象的概念,指的是:对某些事物的描述。

对象是具体的概念,指的是:实实在在存在的个体。

2.2 类

类是抽象的概念,指的是:对某些事物的描述。简单地说,类就是一个模板。

定义Python类语法:

class 类名:def 方法名(self):代码1代码2...# 其他方法...

例如,一起来完成:

(1)定义一个学生类;

(2)让这个学生努力学习;

(3)执行程序,观察效果。

class student:def student(self):print("要努力学习")
# 当仅定义了后,执行程序没有效果

在这里插入图片描述

2.3 对象

对象是具体的概念,指的是:实实在在存在的个体。简单的说,对象就是通过类创建出来的实体。
创建对象语法:

  • 对象名 = 类名()
    调用方法语法:
  • 对象名.方法名()

说明:不用给self参数传递参数值。
例如,一起来完成:

(1)用对象模拟制造出一台小轿车;

(2)小轿车能跑起来;

(3)执行程序,观察效果。

class Car:def run(self):print("小轿车能跑起来...")# 1.创建对象
# 对象名 = 类名()
car = Car()
# 2.调用方法
# 对象名.方法名()
car.run()   # 不需要给self传递值

在这里插入图片描述

2.4 self关键字

self是一个Python关键字,在面向对象中,self指向了对象本身。比如,创建了一个学生对象。

# 定义类
class Student:pass# 创建对象
student = Student()

例如,一起来完成:

(1)定义一个学生类,且学生在努力学习;

(2)创建一个对象,同时输出对象名、self,了解self的含义;

(3)再到学生类中,定义一个学生睡觉的行为,并分别通过对象名、self调用方法;

(4)执行程序,观察self的效果。

# 1.定义学生类  输出self
class Student:def study(self):  # 当前的,当前的对象print("=======================")print("正在努力学习!")print("===============",self)print("=======================")# 睡觉def sleep(self):# 类内部调用   self = 当前的对象# 对象名.方法名()# self.方法名()self.study()# 2.输出对象名
stu = Student()
print(stu)  
# 调用
stu.study()  # self = 当前的对象

3. 对象属性

3.1 什么是属性

在现实生活中,属性就表示固有特征,比如:一辆小轿车的属性有轮胎数、颜色、品牌等。
属性可以简单理解为与生俱来的特征,比如一个人的姓名、年龄、身高、体重等都是属性。
属性Python面向对象中,直接使用变量来表示。
需要注意的是,一个对象通常包含两部分方法属性
在这里插入图片描述

3.2 类外面访问属性

在类外面访问属性,分为:

(1)添加属性

(2)获取属性
说明:要访问对象中的属性,需要使用.来操作。
在这里插入图片描述

  • 添加属性的语法:
    对象名.属性名 = 值
  • 获取属性语法:
    对象名.属性名

例如,一起来完成:
(1)在车类外设置车的颜色为红色、有4个轮胎;
(2)获取属性值并输出结果。

class Car:def run(self):print("汽车能跑起来...")# 1.创建对象
car = Car()
# 2.添加属性
car.color = "红色"
car.number = 4
# 3.获取属性
print(f"颜色:{car.color}")
print(f"轮胎数:{car.number}")

3.3 类内部获取属性

在类内部获取属性语法:

self.属性

例如,一起来完成:

(1)在类外部添加2个属性:车颜色、车品牌;

(2)在类内部定义一个show()方法来获取属性值信息。

class Car:def run(self):print("汽车能跑起来...")# 定义方法def show(self):print(f"车颜色:{self.color}")print(f"车的品牌:{self.brand}")car = Car()
# 外部设定值
car.color = "黑色"
car.brand = "BWM"
# 内部获取值
# 调用方法
car.show()

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

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

相关文章

分治算法(4)_快速选择_库存管理III_面试题

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 分治算法(4)_快速选择_库存管理III_面试题 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论&#x1f…

esp8266 at指令链接wifi时一直connect disconnest

那是你的连接wifi的名字密码有误或者热点有问题,看看热点是不是把设备拉入黑名单或者设置为5G或者连了校园网或者设置了最多链接设备

sqli-labs靶场第三关less-3

sqli-labs靶场第三关less-3 1、确定注入点 http://192.168.128.3/sq/Less-3/?id1 http://192.168.128.3/sq/Less-3/?id2 有不同回显,判断可能存在注入, 2、判断注入类型 输入 http://192.168.128.3/sq/Less-3/?id1 and 11 http://192.168.128.3/sq/L…

【js逆向学习】极志愿 javascript+python+rpc

JSRPC使用方式 逆向目标逆向过程逆向分析1、什么是 websocket2、websocket的原理3、总体过程3.1 环境说明3.2 python服务端代码3.3 python客户端代码 4、Sekiro-RPC4.1 执行方式4.2 客户端环境4.3 参数说明4.4 SK API4.5 python代码调试4.6 代码注入流程 逆向总结 逆向目标 网…

大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

基于SpringBoot健身房管理系统【附源码】

效果如下: 系统首页界面 系统注册详细页面 健身课程详细页面 后台登录界面 管理员主页面 员工界面 健身教练界面 员工主页面 健身教练主页面 研究背景 随着生活水平的提高和健康意识的增强,现代人越来越注重健身。健身房作为一种专业的健身场所&#x…

28 基于51单片机的两路电压检测(ADC0808)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,通过ADC0808获取两路电压,通过LCD1602显示 二、硬件资源 基于KEIL5编写C代码,PROTEUS8.15进行仿真,全部资源在页尾,提供…

No.6 笔记 | Linux操作系统基础:全面概览与核心要点

1. 简介与历史 1.1 起源 创始人:Linus Torvalds(芬兰赫尔辛基大学学生)初衷:设计一个替代Minix的全功能Unix操作系统首次发布:1991年10月5日,Linux v0.01版本 2. Linux特点 多用户多任务:用…

【斯坦福CS144】Lab1

一、实验目的 1.实现一个流重组器——一个将字节流的小块 (称为子串或段 )按正确顺序组装成连续的字节流的模块; 2.深入理解 TCP 协议的工作方式。 二、实验内容 编写一个名为"StreamReassembler"的数据结构,它负责…

k8s 中存储之 NFS 卷

目录 1 NFS 卷的介绍 2 NFS 卷的实践操作 2.1 部署一台 NFS 共享主机 2.2 在所有k8s节点中安装nfs-utils 2.3 部署nfs卷 2.3.1 生成 pod 清单文件 2.3.2 修改 pod 清单文件增加 实现 NFS卷 挂载的 参数 2.3.3 声明签单文件并查看是否创建成功 2.3.4 在 NFS 服务器 创建默认发布…

15分钟学 Python 第38天 :Python 爬虫入门(四)

Day38 : Python爬虫异常处理与反爬虫机制 章节1:异常处理的重要性 在爬虫开发过程中,网络请求和数据解析常常会遭遇各种异常。正确的异常处理可以提高程序的稳定性,避免崩溃,并帮助开发者快速定位问题。 章节2:常见…

杠铃检测系统源码分享

杠铃检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision 研究…

Python | 由高程计算坡度和坡向

写在前面 之前参加一个比赛,提供了中国的高程数据,可以基于该数据进一步计算坡度和坡向进行相关分析。 对于坡度和坡向,这里分享一个找到的库,可以方便快捷的计算。这个库为:RichDEM,官网地址如下 https…

Windows系统编程(四)远程线程

本章内容讲解远程线程 远程线程 我们之前所学过的CreateThread()是创建一个本地线程,其本质是启动一个进程然后执行一个函数。而我们学习网络安全经常会与shellcode打交道,其本质上是以特殊的编程手法所编写的一段普通的代码。这段代码可以在任意环境下…

pWnOS2.0 靶机渗透( cms 渗透,php+mysql 网站渗透,密码碰撞)

pWnOS2.0 靶机渗透( ) 靶机介绍 vulnhub 靶机 本地搭建 由于靶机特性,靶机网卡位nat模式扫不到,原来需要改 nat 的地址 参考方法 https://blog.csdn.net/Bossfrank/article/details/131415257 作者主页 https://blog.csdn.net/Bossfrank?typeblog P…

Hallo部署指南

一、介绍 Hallo是由复旦大学、百度公司、苏黎世联邦理工学院和南京大学的研究人员共同提出的一个AI对口型肖像图像动画技术,可基于语音音频输入来驱动生成逼真且动态的肖像图像视频。 该框架采用了基于扩散的生成模型和分层音频驱动视觉合成模块,提高了…

【Unity学习笔记】解决疑似升级Win11或使用Unity6导致Unity旧版本无法打开的问题

【Unity学习笔记】解决疑似升级Win11或使用Unity6导致Unity旧版本无法打开的问题 一句话省流: 确保项目地址没有任何中文,重新申请个许可证,然后该咋就咋,完事。 ——————————————————————————————…

Oracle登录报错-ORA-01017: invalid username/password;logon denied

接上文:Oracle创建用户报错-ORA-65096: invalid common user or role name 我以为 按照上文在PDB里创建了用户,我以为就可以用PLSQL远程连接了,远程服务器上也安装了对应版本的Oracle客户端,但是我想多了,客户只是新建…

Nginx06-静态资源部署

零、文章目录 Nginx06-静态资源部署 1、静态资源概述 静态资源:是在Web开发中不经常改变的文件,比如图片、CSS样式表、JavaScript脚本文件等。这些资源通常是预先编译好的,不需要服务器端的动态处理。动态资源:是在Web开发中需…

【自动驾驶】《Planning-oriented Autonomous Driving》UniAD论文阅读笔记

1.参考 论文:https://arxiv.org/pdf/2212.10156 代码:https://github.com/OpenDriveLab/UniAD 2.摘要 原来的自动驾驶任务都是分为模块化的,感知,预测,规划等。每个独立的任务可能都优化得很好,但可能会…