news 2026/4/26 9:17:38

Python入门篇之面向对象

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python入门篇之面向对象

面向对象设计与面向对象编程的关系

面向对象设计(OOD)不会特别要求面向对象编程语言。事实上,OOD 可以由纯结构化语言来实现,比如 C,但如果想要构造具备对象性质和特点的数据类型,就需要在程序上作更多的努力。当一门语言内建 OO 特性,OO 编程开发就会更加方便高效。另一方面,一门面向对象的语言不一定会强制你写 OO 方面的程序。例如 C++可以被认为“更好的C”;而 Java,则要求万物皆类,此外还规定,一个源文件对应一个类定义。然而,在 Python 中,类和 OOP 都不是日常编程所必需的。尽管它从一开始设计就是面向对象的,并且结构上支持 OOP,但Python 没有限定或要求你在你的应用中写 OO 的代码。OOP 是一门强大的工具,不管你是准备进入,学习,过渡,或是转向 OOP,都可以任意支配。考虑用 OOD 来工作的一个最重要的原因,在于它直接提供建模和解决现实世界问题和情形的途径。



类是一种数据结构,我们可以用它来定义对象,后者把数据值和行为特性融合在一起。类是现实世界的抽象的实体以编程形式出现。实例是这些对象的具体化。可以类比一下,类是蓝图或者模型,用来产生真实的物体(实例)。类还可以派生出相似但有差异的子类。编程中类的概念就应用了很多这样的特征。在 Python 中,类声明与函数声明很相似,头一行用一个相应的关键字,接下来是一个作为它的定义的代码体,如下所示:

复制代码代码如下:


def functionName(args):
'function documentation string' #函数文档字符串
function_suite #函数体
class ClassName(object):
'class documentation string' #类文档字符串
class_suite #类体

二者都允许你在他们的声明中创建函数,闭包或者内部函数(即函数内的函数),还有在类中定义的方法。最大的不同在于你运行函数,而类会创建一个对象。类就像一个 Python 容器类型。尽管类是对象(在 Python 中,一切皆对象),但正被定义时,它们还不是对象的实现。

创建类

Python 类使用 class 关键字来创建。简单的类的声明可以是关键字后紧跟类名:

复制代码代码如下:


class ClassName(bases):
'class documentation string' #'类文档字符串'
class_suite #类体

基类是一个或多个用于继承的父类的集合;类体由所有声明语句,类成员定义,数据属性和函数组成。类通常在一个模块的顶层进行定义,以便类实例能够在类所定义

的源代码文件中的任何地方被创建。

声明与定义
对于 Python 函数来说,声明与定义类没什么区别,因为他们是同时进行的,定义(类体)紧跟在声明(含 class 关键字的头行[header line])和可选的文档字符串后面。同时,所有的方法也必须同时被定义。如果对 OOP 很熟悉,请注意 Python 并不支持纯虚函数(像 C++)或者抽象方法(如在 JAVA 中),这些都强制程序员在子类中定义方法。作为替代方法,你可以简单地在基类方法中引发 NotImplementedError 异常,这样可以获得类似的效果。

类属性

属性就是属于另一个对象的数据或者函数元素,可以通过我们熟悉的句点属性标识法来访问。一些 Python 类型比如复数有数据属性(实部和虚部),而另外一些,像列表和字典,拥有方法(函数属性)。

有关属性的一个有趣的地方是,当你正访问一个属性时,它同时也是一个对象,拥有它自己的属性,可以访问,这导致了一个属性链,比如,myThing,subThing,subSubThing.等等

类的数据属性

数据属性仅仅是所定义的类的变量。它们可以像任何其它变量一样在类创建后被使用,并且,要么是由类中的方法来更新,要么是在主程序其它什么地方被更新。
这种属性已为 OO 程序员所熟悉,即静态变量,或者是静态数据。它们表示这些数据是与它们所属的类对象绑定的,不依赖于任何类实例。如果你是一位 Java 或 C++程序员,这种类型的数据相当于在一个变量声明前加上 static 关键字。静态成员通常仅用来跟踪与类相关的值。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 9:14:47

zteOnu深度解析:5分钟掌握中兴光猫工厂模式解锁技术

zteOnu深度解析:5分钟掌握中兴光猫工厂模式解锁技术 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 中兴光猫工厂模式解锁、中兴光猫权限提升、网络设备管理工具。zteOnu是…

作者头像 李华
网站建设 2026/4/26 9:10:26

EwoMail开源版实战:搭建专属“验证码接收池”的完整配置流程

EwoMail开源版实战:搭建专属“验证码接收池”的完整配置流程 在数字化业务场景中,临时邮箱的批量管理与验证码集中处理已成为开发测试、营销验证的刚需。传统方案要么依赖第三方服务存在隐私风险,要么需要反复登录不同邮箱效率低下。本文将手…

作者头像 李华
网站建设 2026/4/26 9:03:28

八大网盘直链下载助手:免费解锁高速下载的终极解决方案

八大网盘直链下载助手:免费解锁高速下载的终极解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…

作者头像 李华
网站建设 2026/4/26 9:03:26

GTE-Base-ZH与Git结合:智能化代码仓库文档检索与分析

GTE-Base-ZH与Git结合:智能化代码仓库文档检索与分析 你有没有过这样的经历?接手一个新项目,面对浩如烟海的代码和文档,想找一个“上周修复了支付接口超时问题的提交记录”,却不得不在成百上千条提交信息里手动翻找。…

作者头像 李华
网站建设 2026/4/26 9:01:34

终极指南:如何快速批量替换网页文本的Chrome扩展工具

终极指南:如何快速批量替换网页文本的Chrome扩展工具 【免费下载链接】chrome-extensions-searchReplace 项目地址: https://gitcode.com/gh_mirrors/ch/chrome-extensions-searchReplace chrome-extensions-searchReplace 是一款专为开发者、内容编辑者和网…

作者头像 李华
网站建设 2026/4/26 9:00:46

01 Git基础教程

Git 与 SVN 区别 1. Git是分布式的,SVN不是; 这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别2.Git把内容按元数据方式存储,而SVN是按文件; 所有的资源控制系统都是把文件…

作者头像 李华