【Python进阶】实战Python面向对象基本编程

再再肝3天,整理了70个Python面向对象编程案例,怎能不收藏? 在 Python 中的方法中同时访问 cls 和 self。在 Python 中使用 print() 打印类的实例。Python 中带有 self 参数的类方法装饰器。使用给定的装饰器获取 Python 类的所有方法。在 Python 中创建多个传入参数列表的类变量。在 Python 中的另一个类中使用隐藏的装饰器。在 Python 中的一个函数上使用多个装饰器。获取在 Python 中修饰的给定类的所有方法。在 Python 中的类中将装饰器定义为方法。在 Python 中创建和使用静态类变量。 阅读详情

欢迎来到专栏《Python进阶》。在这个专栏中,我们会讲述Python的各种进阶操作,包括Python对文件、数据的处理,Python各种好用的库如NumPy、Scipy、Matplotlib、Pandas的使用等等。我们的初心就是带大家更好的掌握Python这门语言,让它能为我所用。

今天是《Python进阶》专栏的第一期,在本期中,我们将主要介绍Python面向对象的基本理论、类的定义与实例化。

作者&编辑 | 汤兴旺 

1 Python面向对象基本理论

在解释面向对象之前,我们先了解另外一个概念,那就是面向过程。面向过程顾名思义其核心在于过程。也就是解决一个实际问题的步骤,即先干什么,再干什么。举一个我们平时洗碗的例子,如下图所示:

640?wx_fmt=png

从上图我们看出小明要想完成洗碗这个任务,他面对的是放水、放碗等六个步骤,他需要通过这六步才能更好的完成洗碗任务。

还是这个例子,我们看看如果是面向对象的思想会是一个怎样的过程。如下图所示:

640?wx_fmt=png

通过上图我们可以看出如果是面向对象的思想,小明要想完成洗碗这个任务,他只要起到一个leader的作用就行,而不是去做具体的事情。即小明面向他的儿子,小明的儿子面向自动洗碗机,而自动洗碗机具体洗碗的过程就不是小明儿子关心的事情了,更不是小明关心的事情了。在这一系列的过程中,其实都是在找这个任务可以由谁来做。

640?wx_fmt=jpeg

通过上面的例子我相信你已经明白了什么是面向对象了。面向对象的核心就是对象,它实际上是对面向过程的一个封装,我们需要把自己当成一个leader来审视每一个具体的任务,找到对象,确定对象的属性和行为,负责好指挥和调度就行,而面向过程的话你就需要完成一个任务的每一个步骤,这样你会不会累死,哈哈!

2 面向对象-类

2.1 基本概念

从上面的介绍,我们已经理解了什么是面向过程,什么是面向对象。那么我们应该如何在编程中使用面向对象这个思想呢?或者说如何从面向过程的编程思想过渡到面向对象编程的思想呢?具体方法如下:

(1) 列举出一个任务中具体的实现步骤,也就是面向过程中的那些步骤

(2) 分离(1)中的具体步骤并划分到某一个对象中

(3) 根据(2)中的对象及对应的行为,抽象出对应的类

(4) 设计类

上面我们提到了一个概念——类。实际上类就是某一个具体对象特征的抽象,是用来描述具有相同的属性和方法的对象的集合。为了让大家更好的理解,请看下面一个例子:

640?wx_fmt=png

小明是个具体的人,他的属性值和行为值各有三个,我们可以根据小明这个具体的人抽象出优质青年这个类,它是一个抽象化的概念,并不是指一个具体的人。

640?wx_fmt=png

我们根据这个抽象出来的类,就可以生产具体的对象。

640?wx_fmt=png

上面的小华、张三、李四就是一个个具体的对象。上面的整个流程如下图所示:

640?wx_fmt=png

由一个具体的对象抽象成一个类再实例化成一个具体的对象。

2.2 类的定义与实例化

在Python中,定义类是通过class关键字完成的,具体方法如下:

class Student(object):

        pass

从上面我们可以看出class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,通常,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。

定义好了Student类,就可以根据Student类创建出Student的实例,创建实例是通过类名+()实现的:

Jack = Student()

我们来print(Jack)来看下结果,如下

<__main__.Student object at 0x000001B1B89BA6A0>

我们来解释下这个输出,输出里面的Student就是类,Object是对象,0x000001B1B89BA6A0这个是内存地址,也就是这个类Student实例化后的对象在内存中地址为0x000001B1B89BA6A0。

为什么print(Jack)后的结果是那样的呢?我们来看下整个流程:

640?wx_fmt=png

实际上就是通过这个变量找到对象,然后根据对象里面的__class__值找到对应的一个类。我们可以看下Jack的__class__属性值来验证下,只需要print(Jack.__class__)即可,输出如下:

<class '__main__.Student'>

不知道你是否明白了创建对象时的底层运作,欢迎交流!

2.3 类的设计

上面我们讲解了如何定义一个类及类的实例化,现在我们讲解如何设计一个类。就以利用TensorFlow2.0对图片数据进行预处理的一个方法来讲解。具体代码如下:

import tensorflow as tf

txtfile=r"D://Learning//tensorflow_2.0//smile//datas//train//train.txt"

def read_txt_file(self):def __init__(self, txt_file, batch_size, num_classes,
                image_size, buffer_scale=100):self.read_txt_file()

      # 转换成Tensor

 self.img_paths = tf.convert_to_tensor(self.img_paths, dtype=tf.string)def augment_dataset(self, image, size): def parse_function(self, filename, label):

       img = tf.io.read_file(filename)

       img = tf.image.convert_image_dtype(img, dtype=tf.float32)

 img=tf.image.random_crop(img, [self.image_size[0], self.image_size[1], 3])img = self.augment_dataset(img, self.image_size)

在上面的例子中我们定义了一个ImageData类,类中定义了四个方法分别是__init__()方法、read_txt_file()方法、parse_function()方法和augment_dataset()方法。我们首先来解释下__init__方法,其实际上可以理解为一个初始化方法,也就是在创建一个对象时会默认被调用,不需要手动调用。但是其他的方法必须要手动的调用,如上面代码黑色加粗部分。

为了加深对__init__()方法的理解,我们再来看一个简单的例子,如下:

class AiLearning():

上面的输出很简单就是yousanai。那如果不是__init__方法,结果会怎样呢?

class Ai_Learning():

这个输出程序会报错,会显示AttributeError: 'Ai_Learning' object has no attribute 'a'。即没有属性a。我们需要将代码改成下面的代码,才能正确输出,我们所做的改动就是手动调用了Learning()方法。

class Ai_Learning():

我相信通过上面的讲解你已经明白了如何来设计一个类了。

总结

本期我们介绍了Python面向对象的思想及其基本概念,也介绍了如何定义一个类、创建一个对象和设计一个类,并介绍了创建对象时的底层运作机制。希望您能更好的掌握面向对象的思想。

下期预告:Python文件操作

有三AI编程微信公众号《三人行ToCode》

640?wx_fmt=png

有三AI编程方面的微信公众号《三人行ToCode》创建了,欢迎加入,希望大家能借助这个平台,扎实自己的编程基础。

转载文章请后台联系

侵权必究

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

往期精选

Python 面向对象(练习题) python 面向对象章节,组合和继承,工厂模式和单例模式结合,@property装饰器用法的练习 阅读详情

相关推荐

Python:进阶 Python3 面向对象编程

深入探讨 Python 中的面向对象编程(OOP)概念,讲解类的定义、继承、封装、魔术方法等重要特性。

Kant2048的博客 1241

三道关于python面向对象的练习题

房子要使用到家具,被依赖的类,通常应该先开发,可以避免在开发主类过程中,要中途插入开发被依赖的类。新房子没有任何的家具,代表构造方法不需要给家具名称列表属性初始化赋值。小明、小美是具体的对象的姓名,而体重是另一个属性,所以有两个属性。但房子其实还有一个特殊属性,剩余面积,它的初始值应该和总面积相同。小明、小美都是一个具体的对象,他们都是人,所以应该抽象成人类。席梦思、衣柜、餐桌都是一个具体的对象,都是家具类的实例对象。跑步、吃东西都是一种行为,所以也有两个方法。因为家具类简单,只有两个方法,且没有行为。

Python热爱者的博客 1917

Tesla V100 在 Windows 下的驱动选择与模式切换实战

本文详细解析了Tesla V100专业计算卡在Windows系统下的驱动安装与模式切换实战。针对设备管理器识别但任务管理器“隐身”的常见问题,文章指出其默认TCC模式为纯计算设计,并指导用户正确选择数据中心或GRID驱动。核心在于通过注册表修改或驱动选择,在高效的TCC模式与便于监控的WDDM模式间切换,同时提供了nvidia-smi命令行监控与AI框架测试等稳定使用方案。

weixin_29247219的博客 1809

Python面向对象程序设计(3道题)

1.设计一个Circle类来表示园,这个类包含圆的半径以及求周长和面积的函数。再使用这个类创建半径为1~100的圆,并计算出相应的周长及面积。 class circle: def __init__(self,radius): self.radius=radius def length(self): return self.radius*2*3.14 def area(self): return self.radius**2*3.14 a

fjhkrje的博客 7715

SolidWorks与Python二次开发实战:从宏录制到自动化脚本

本文详细介绍了利用Python对SolidWorks进行二次开发的实战方法。通过宏录制获取操作指令,再将其转换为Python脚本,工程师可以高效实现建模、出图等重复任务的自动化,显著提升设计效率。文章涵盖了环境搭建、代码转换、调试技巧及完整实战案例,为工程师提供了从入门到精通的完整路径。

weixin_29082143的博客 955

通达信双紫擒龙指标实战指南:从源码解析到精准安装

本文详细解析了通达信双紫擒龙指标的核心逻辑、源码获取与安全验证、安装流程及实战应用技巧。通过紫紫红黄四种颜色信号捕捉趋势转折点,结合MACD、布林通道和成交量加权算法,提升交易准确性。文章还提供了个性化设置、信号解读及常见问题解决方案,帮助投资者高效运用该指标。

weixin_29248611的博客 1063

Python编程作业五:面向对象编程

Python编程作业五:面向对象编程

Morse_Chen的博客 1919

团结引擎+OpenHarmony 记录 (持续更新中)

获取不到的原因是因为二者不在同一个线程中,所以数据没有同步。而 globalThis.context 数据进行了同步。(TuanjieMainWorkerHandler.ts中可以看到)在进行绘制 UI 的时候 ,如果组件有 Native API 就可能不会显示出来,例如 web 控件就不能展示出来,刚加上权限的时候 会报错 因为缺少 reason ,添加上就不会报错了。只有纯 UI 控件是可以展示出来的,注释掉 web控件后就可以。

m_cainiaokuaifei的博客 1492

python面向对象图片_【Python进阶】实战Python面向对象基本编程

欢迎来到专栏《Python进阶》。在这个专栏中,我们会讲述Python的各种进阶操作,包括Python对文件、数据的处理,Python各种好用的库如NumPy、Scipy、Matplotlib、Pandas的使用等等。我们的初心就是带大家更好的掌握Python这门语言,让它能为我所用。今天是《Python进阶》专栏的第一期,在本期中,我们将主要介绍Python面向对象的基本理论、类的定义与实例化。...

weixin_33879932的博客 237

TI MSPM0G3507 循迹小车强制寻黑线代码一

一个基于MSPM0微控制器的循迹小车控制系统。系统通过8路循迹传感器检测黑线位置偏差,使用PID算法计算电机控制量。主程序初始化中断、PWM等外设,在按键触发后进入循迹模式。传感器数据处理函数根据检测到的黑线位置返回偏差值(-7到7),PID控制器根据偏差调整左右电机速度。系统还包含限幅处理、中断服务等模块,实现稳定的自动循迹功能。代码结构清晰,展示了嵌入式系统中传感器数据处理、电机控制和PID算法的典型实现方式。

雾削木的优快云博客 1856

苹果生态最佳搭档:Mac mini + OpenClaw + iPhone 远程控制

本文详细介绍如何通过iPhone远程控制Mac mini上的OpenClaw应用,打造高效苹果生态工作流。内容包括:1) 苹果生态整合优势,包括AirDrop、Handoff等功能对比;2) Mac mini配置步骤,涵盖SSH/VNC设置、网络优化及Docker部署OpenClaw;3) iPhone端SSH/VNC客户端选择与Tailscale内网穿透配置;4) 详细SSH密钥设置与连接测试方法。通过这套方案,用户可实现跨设备无缝控制OpenClaw应用,提升远程工作效率。(149字)

一键难忘的博客 796

Python 编程实战指南:从基础到进阶

在 Python 中,使用def关键字定义一个函数,函数名后跟着圆括号,用来传递参数。name } " # 调用函数 message = greet("Alice") print(message)# 调用函数在现代计算机系统中,我们经常需要同时执行多个任务,尤其是在进行 I/O 密集型操作或需要提高程序执行效率时。并发编程是指多个任务在同一时间段内执行的能力。

weixin_43199439的博客 1819

128、点云配准与ICP:经典配准算法与深度学习配准

上周调试一台双臂协作机器人,左手持结构光相机扫描桌面上的随机堆叠工件,右手准备执行抓取。问题出在“对齐”这一步——相机扫描得到的点云和CAD模型点云之间差了大约15度的旋转,导致抓取姿态计算出来直接怼到桌面上。我第一反应是“ICP跑一下不就行了”,结果跑了三分钟,误差纹丝不动,甚至越迭代越发散。后来查了日志才发现,初始位姿给得太离谱,ICP直接掉进了局部最优。这个场景太典型了——很多人以为点云配准就是调个ICP库函数,实际工程里坑比想象中多得多。今天这篇笔记,咱们把点云配准这件事从头捋一遍。

sundong_81的博客 49

Python入门级教程:从零开始学习Python编程

1. Python简介:了解Python的历史和优势,为什么选择Python作为您的编程语言。2. Python安装:详细介绍在不同操作系统上安装Python的方法,并演示如何配置Python的开发环境。

优快云_224022的博客 1144

指纹浏览器降维打击(下):Cloudflare Turnstile 与 hCaptcha 的底层交互逻辑

本文将深度拆解:Turnstile 与 hCaptcha 的 Iframe 沙箱通信机制,动态混淆 JS 与 PoW(工作量证明)的物理破解法则,以及如何通过 C++ 底层事件合成与环境基因强绑定,实现验证码的“无感过验”。

数据知道的博客 424

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python编程零基础免费网课-Python网课推荐——免费学习Python编程

对于想要学习python的初学者,面对网上大量的学习素材无从下手。今天小编就整理了一份详细的python教学视频合集,希望能为初学者提供一些学习的方向。1.python入门课程推荐:零基础入门学习Python《小甲鱼零基础入门学习Python视频基础》(python教学版本:3.3.2)讲的是Python开发的入门教程,它将介绍Python语言的特点和适用范围,Python基本的数据类型,条件判断...

weixin_37988176的博客 990

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Python技术深度探索:从基础到进阶的实践之旅(第一篇)

本文仅是对Python技术的一个初步探索,从基础语法到进阶应用,再到实战案例,旨在为读者提供一个全面而系统的学习路径。Python的强大不仅在于其语言的灵活性,更在于其背后庞大的社区和丰富的生态。无论是初学者还是经验丰富的开发者,都能在这个平台上找到适合自己的学习资源和项目实践机会。期待你在Python的编程之旅中,不断发现新的乐趣和挑战!由于篇幅限制,本文仅涵盖了Python技术探索的第一部分。

运维人生 900

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

七月老师python3入门+进阶课程_Python3入门+进阶全网最热全套名师讲座课程

Python3入门+进阶全网最热全套名师讲座课程——更多资源,课程更新在博学商学院资源,名师讲座课程简介:Python3入门+进阶全网最热全套名师讲座课程适合人群只要你掌握基本的编程概念、对Python感兴趣的人都可以学习本课程,这是一门真正入门课程,但并不止步于入门将带你从入门向进阶过渡温馨提示:如果你是一名资深程序员,强烈推荐你将Python做为第二语言,未来,它将助你在激烈的职场竞争中拔得头...

weixin_39614754的博客 290

从零学python黑马程序员_Python实战编程--从零学Python/Python应用编程丛书

导语内容提要黑马程序员编著的《Python实战编程--从零学Python》涵盖了Python开发的核心知识。其中,第1~13章主要讲解的是Python的核心语法,包括基本概念和语句、风格、数据类型、字符串、序列、流程控制、字典和集合、函数和函数式编程、文件和面向对象编程;第14~20章讲解进阶内容,如错误和异常的处理、模块、内存管理、正则表达式、图形界面、多任务编程、网络编辑、数据库、Web编程等...

weixin_39829236的博客 787

万门大学python零基础10天进阶班_万门大学Python零基础10天进阶班视频教程

万门大学Python零基础10天进阶班视频教程课程简介:旨在通过两周的学习,让学生不仅能掌握python编程基础从而进行计算机程序的开发,还会学习到网页开发基础,数据库基础等计算机科学的基本知识,对网站开发以及计算机科学有初步的了解。) 第 1 讲课程铺垫第 2 讲Python基础(上)第 3 讲python基础(中)第 4 讲python基础(下)第 5 讲python进阶第 6 讲module...

weixin_33657398的博客 581

[python作业AI毕业设计博客]Python 3 面向对象编程(第3版) 中英文Python 3 Object-Oriented ...

python测试开发项目实战-目录 python工具书籍下载-持续更新 python 3.7极速入门教程 - 目录 第2版 中文 介绍 本书主要介绍如何使用Python 3进行面向对象编程。1~4章介绍面向对象这一编程范式的基本准则,以及Python是如何运用这些准则实现面向对象编程的;第5~8章,介绍如何利用Python中的内置函数快速、简单地实...

weixin_34087503的博客 163

Python进阶编程总结

Python作为一种功能强大且广泛应用的编程语言,其进阶编程领域蕴含着丰富的知识与技巧。在当今数字化快速发展的时代,深入掌握Python进阶编程对于提升开发效率、优化代码质量以及应对复杂项目需求有着至关重要的意义。函数式编程提供了一种全新的编程范式,它强调将计算视为函数的求值过程,通过高阶函数、匿名函数等特性,使代码更加简洁灵活且易于维护。而面向对象编程则以类和对象为核心,通过合理定义变量、方法和属性,构建出清晰的程序结构。

在技术的广袤天地里,本博客如精准罗盘。剖析前沿科技,深掘代码奥秘,以精炼笔触,带您穿越复杂技术迷宫,速达知识彼岸。 1098

【python】python进阶——面向对象编程

Python 从设计之初就是一门面向对象的语言,它的核心机制建立在“一切皆对象”的基础上,但它也优雅地支持函数式、过程式等多种编程范式,是一门真正的多范式语言。

weixin_51924657的博客 1942

【Python基础】Python面向对象编程

​ Python面向对象编程(简称OOP)是Python语言中最重要的特性之一。它是一种通过“对象”来设计软件的方法。它通过将数据和操作数据的方法封装在对象中,使得程序更加模块化、可重用和易于维护。它遵循一切皆对象的理念,可以将现实世界的事物使用类与实例进行模拟。​ 对于初学者来说,理解面向对象编程的基本原理和Python中的实现方式是非常有帮助的。本文旨在为初学者提供一个易于理解的Python面向对象编程介绍,并探讨其在实际编程中的应用和优势。什么是Python?

分享是一种境界,勤于分享,乐于分享! 2136

[特殊字符] Python进阶必读:面向对象编程+异常处理+实战项目

当你已经掌握Python基础语法后,是时候深入探索其核心特性!本文将带您学习面向对象编程(OOP)异常处理高级数据结构装饰器等进阶内容,并通过实战项目巩固知识,助你成为真正的Python开发者!

jdxhb的博客 1515

Python教程:面向对象基础和进阶

其实,在前面章节的学习中,我们已经接触了封装,比如说,将乱七八糟的数据扔进列表中,这就是一种简单的封装,是数据层面的封装;继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。区别就是,那些类是在解释器级别注册好的,而现在我们学习的是自定义类,但语法使用都是相同的。面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Person类,而实例是根据类创建出来的一个个具体的“对象”。

weixin_50556117的博客 2289
上一篇: 【强化学习】从强化学习基础概念开始
下一篇: 【Python进阶】Python进阶专栏栏主自述:不忘初心,砥砺前行
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值