【python进阶篇】面向对象编程(1)

面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。

在Python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)的概念。

一.对象(Object)

一个对象具有两个特征:

  • 属性

  • 方法

我们可以举个例子,比如人:

  • 属性:肤色、体重、发型等

  • 方法:打游戏、跑步、游泳等

总之一句话总结就是:属性=对象有什么,方法=对象会什么。

关于对象的代码实例,接下来在介绍类的时候一并说明。

二.类(class)

1.创建类和对象

语法:

class 类名:属性方法

说明:
类是抽象的模板,在Python中,定义类是通过class关键字

实例:

class person:name = "小红"       ##name属性age = 20             ##age属性def sport(self):                 ###sport方法print('运动真开心')w = person()   ###创建类的对象

这边我们创建了一个类,并给这个类添加了属性及方法,然后我们还创建了一个类的对象并赋给了变量W,接下来我们来试下调用我们的属性及方法。

执行对象的方法:

w.sport()

输出:

执行对象的属性:

w.name

输出:

2.self是什么?

(1)self即代表着实例(对象)本身

(2)名字不一定必须叫self,可以叫she或者he,但是按照约定我们还是使用self

3.类的初始化:

我们可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__(两个下划线)方法来实现, 这个方法不需要被调用,只要创建对象就会自动执行。

实例:

class person:def __init__(self):self.name = "小红"       ##name属性self.age = 20             ##age属性print('程序开始执行啦')def sport(self):                 ###sport方法print('运动真开心')w = person()   ###创建类的对象

输出:

三.类的三大特性

三大特性:封装、继承、多态

1.封装

在Python中使用OOP,我们可以限制对方法和变量的访问。这样可以防止数据直接修改(称为封装),在Python中,我们使用下划线作为前缀来表示私有属性,即单“ _”或双“ __

class person:def __init__(self):self.__age = 20   def change(self):print(self.__age)w = person()
w.change()w.__age

输出:

这边显示已经无法从外部访问,这样就确保了外部代码不能随意修改对象内部的状态。

2.继承

继承是一种创建新类的方法,用于在不修改现有类的细节的情况下使用它。

我们直接通过实例来了解下:
 

class A:  ##父类def __init__(self):print("自动执行")def a(self):print("执行程序A")class B(A):    ##子类def b(self):print('执行程序B')B_A = B()
B_A.a()   ##调用父类的方法
B_A.b()   ##调用子类的方法

输出:

通过上面的实例,我们可以看出,子类继承了父类的功能,调用子类的属性及方法。

3.多态性

多态性是一种功能(在OOP中),可以将公共接口用于多种形式(数据类型)。

直接看实例:
 

class A:def a(self):print("执行程序A")class B:def a(self):print('执行程序B')class C:def a(self):print('执行程序C')def select(aa):aa.a()select(A())
select(B()) 
select(C())   

输出:

在上面的程序,我这边定义了A、B、C三个类,它们每个都有通用的a()方法,但是,它们的功能不同,为了允许多态,我们创建了通用接口,即select()可以接受任何对象的函数,然后传递对象即可运行。

四.总结

面向对象编程让编程变得简单而有效,让编程人员的生产力提高。喜欢的朋友后续可以再来看看其他的进阶内容,谢谢。

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

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

相关文章

学习c语言:编译和链接

一、 翻译环境和运⾏环境 在ANSIC的任何⼀种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令。 第2种是执⾏环境,它⽤于实际执⾏代码。 二、 翻译环境 那翻译环境是怎么将源代码转换为可执⾏的机…

谷歌可读屏AI模型ScreenAI:可理解用户界面和信息图表

谷歌研究最新发布的ScreenAI标志着语言和语音控制计算机界面的又一重要进展。这一AI模型不仅能理解用户界面和信息图表,而且在回答基于信息图表的问题、总结内容以及导航用户界面等多项任务上,创下了新的性能标杆。 ScreenAI的核心创新在于对截图的文本…

【深度学习笔记】6_2 循环神经网络RNN(recurrent neural network)

注:本文为《动手学深度学习》开源内容,部分标注了个人理解,仅为个人学习记录,无抄袭搬运意图 6.2 循环神经网络 上一节介绍的 n n n元语法中,时间步 t t t的词 w t w_t wt​基于前面所有词的条件概率只考虑了最近时间…

el-form-item内的el-select如何自适应宽度

最近在使用element-ui做后台管理的时候,有个需求是在弹窗组件里面,添加一个el-select下拉框选项,但是给el-select设置的宽度无法自适应,原因很简单,我们不需要设置固定宽度,设置百分比就行了,让…

MAC测试环境搭建

1 下载pycharm 下载地址:PyCharm:JetBrains 出品的用于数据科学和 Web 开发的 Python IDE 2 安装python3.6.8 下载地址:Index of /ftp/python/3.6.8/ 安装后提示错误 换一种方式:用conda 下载地址:Free Download | …

python异常机制

当代码出现异常后底下代码都不会被执行了,也就是程序崩溃了。当然能避免异常的话尽量避免但是有的时候这个是没有办法避免的。 异常处理 (注:异常处理是从上往下处理,所以编写代码时要注意) 语法 try:可能出现异常…

ThinkPHP6与支付宝支付集成指南:轻松实现在线收款!

随着移动支付的普及,支付宝成为了越来越多人的首选支付方式。而作为一款高性能、高效率、安全稳定的开源框架,thinkphp6也被众多开发人员所青睐。那么,如何在thinkphp6中快速简便地实现支付宝支付呢? 首先,我们需要在…

《数字图像处理(MATLAB版)》相关算法代码及其分析(3)

目录 1 对边界进行子采样 1.1 输入参数检查 1.2 处理重复坐标 1.3 计算边界最大范围 1.4 确定网格线数量 1.5 构建网格位置向量 1.6 计算曼哈顿距离 1.7 整理输出结果 1.8 返回结果 2 改变图像的存储类别 2.1 函数输入 2.2 数据类型转换 2.3 错误处理 2.4 返回结…

如何在线制作二维码并支持样式修改?二维码美化模板设计技巧

在制作二维码的使用,除了对功能有需求之外,二维码的样式也是很多人会注重的一个方面,那么如何快速制作二维码并按照自己需要的要求来优化展示效果呢? 现在二维码制作可以通过网上的二维码生成器工具来完成,比如图片、…

双碳目标下DNDC模型建模方法及在土壤碳储量、温室气体排放、农田减排、土地变化、气候变化中的技术应用

原文链接:双碳目标下DNDC模型建模方法及在土壤碳储量、温室气体排放、农田减排、土地变化、气候变化中的实践技术应用https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&tempkeyMTI2MF9DVWNrMFpvV1d3RGxBZUE2QXJBRnI1NEJkcVhzRFZwakRqYXhhVFQzQnh1MVhJcy1laWh6N…

「AI工程师」模型训练与部署-工作指导

工作指导书 一、工作职责 负责AI模型的训练和优化,确保模型性能达到预定目标。协调资源的分配,管理训练过程中的各种参数和配置。负责模型的部署工作,确保模型能够稳定、高效地运行在实际环境中。监控模型的运行状态,及时处理和…

家居清洁赛道变量,品牌突围要抓住怎样的锚点?

复盘国内清洁电器的扩张历程,从各种指标来看,这似乎是一个不断创造新品类,又不断陷入内卷的行业,每一轮产品创新总会激发一大批玩家蜂拥入场,然后蓝海转瞬之间即翻转为红海。 这也使相关品牌的可持续发展面临考验&…

【算法 高级数据结构】树状数组:一种高效的数据结构(一)

🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏:算法题、 基础算法~赶紧来学算法吧 💡往期推荐: 【算法基础 & 数学】快速幂求逆元(逆元、扩展欧几里得定理、小费马定理&#x…

排序算法:插入排序和希尔排序

一、插入排序 1.基本原理 插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上…

重读 Java 设计模式: 探索经典之道与 Spring 框架的设计

写在开头 记得大学刚毕业那会儿,想学点东西,于是拿出了《Head First 设计模式》这本书,就开始了阅读,我曾对这些模式感到晦涩难懂。然而,随着工作岁月的增长,我逐渐领悟到设计模式的价值,尤其是…

类和对象(4)

文章目录 1. const成员2.取地址及const取地址操作符重载3. 再谈构造函数3.1构造函数体赋值3.2初始化列表 1. const成员 将const修饰的成员函数称为const成员函数。 const修饰类成员函数,实际修饰该成员函数的隐含地this指针,表明在该成员函数中不能对类…

【echarts】xAxis鼠标事件失效问题

项目中用到echarts柱状图,出现x轴标签文字过长重叠问题,在pass掉标签倾斜、换行方案之后最终决定限制文字长度,超出以…占位,鼠标悬浮时显示完整tooltip。 但编写过程中发现xAxis鼠标事件无法触发,只有bar区域是可触发…

【C++杂货铺】详解string

目录 🌈前言🌈 📁 为什么学习string 📁 认识string(了解) 📁 string的常用接口 📂 构造函数 📂 string类对象的容量操作 📂 string类对象的访问以及遍历操…

【uni-app】condition 启动模式配置,生产环境无效,仅开发期间生效

在小程序开发过程中,每次代码修改后,都会启动到首页,有时非常不方便,为了更高效的开发,有时需要模拟直接跳转到指定的页面, 操作方法如下: 在pages.joson里面配置下列代码: "…

解决 matplotlib 中文显示乱码的问题

matplotlib 库默认只显示中文 例如: import matplotlib.pyplot as pltimg plt.imread(test.jpg)# plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 # plt.rcParams[axes.unicode_minus] False # 用来正常显示负号 #有中文出现的情况&#xf…