Python程序设计 第7章:Python面向对象编程

Python程序设计 第7章:Python面向对象编程Python 程序设计第 7 章 Python 面向对象编程 7 1 面向对象编程概述 7 1 1OOP 的产生 7 1 2OOP 核心思想 7 1 3OOP 特征 7 2 类和对象 7 2 1 类的创建 7 2 2 对象的创建 7 2 3 类的属性 7 2 4 类的方法 7 2 5 内部类 7 2 6 魔术方法 7 3 类间关系 7 3 1 依赖关系 7 3 2 关联关系 7 3 3 继承关系 7 4 总结 7 1 面向对象编程概述 7 1 1OOP 的产生 7 1 2OOP 核心思想 7 1 3OOP 特征 7 2 类和对象 7 2 1 类

本章学习目标:

  • 了解面向对象编程思想的由来
  • 掌握类的声明和创建方法
  • 掌握对象的创建和使用方法
  • 掌握类的属性和方法定义方法
  • 了解内部类和魔术方法的基本概念
  • 掌握常见的三种类间关系

本章思维导图
在这里插入图片描述

7.1 面向对象编程概述

根据代码组织方式的不同,编程语言可以分为以下两种。

  • 面向过程语言:面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再依次调用,类似流水线的工作原理。
  • 面向对象语言:面向对象是把构成问题事务分解成各个对象,依靠各个对象之间的交互推动程序执行,进而实现问题的解决。建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在完整解决问题步骤中的行为。

7.1.1 OOP的产生

面向对象其产生的原因主要有以下两点:

  1. 面向过程的编程机制无法解决复杂程序的可维护性和可扩展性问题。
  2. 面向过程的编程机制背离了人们观察和解决问题的基本思路。

简言之,面向过程的编程是根据业务逻辑上到下写代码,典型如C语言等;

面向对象的编程是对变量和函数进行分类和封装,让开发“更快更好更强”,典型如C++JavaC#等。对这两种编程机制,Python均提供了良好支持。
总体而言,Python更偏向于成为面向对象编程的编程语言。

7.1.2 OOP核心思想

面向对象编程的核心思想是把构成问题的各个事物分解成能够完整描述该实体功能的封装类,并通过对象的交互完成问题的解决。

  • 对象作为程序的基本单位,将程序和数据封装于其中,以提高程序的重用性、灵活性和可扩展性。
  • 创建对象模板,而对象是类的实例化。一个类可以创建多个对象。
    在这里插入图片描述

  • 类 :是对实体的抽象,是泛指,比如:动物、植物等。
  • 对象:是类的一个实例,是特例,比如:猫、狗等。
    例如:动物可以对猫的特征和行为进行抽象,然后可以实例化为真实的动物实体。
    在这里插入图片描述
    在采用面向对象思想编程时,可依次采用以下步骤:






7.1.3 OOP特征

7.2 类和对象

7.2.1 类的创建

类、属性和方法的命名约定惯例如下:

  • 类名表示实例的抽象,命名时首字母大写
  • 属性使用名词作为名字,比如name、age、weight等;
  • 方法名一般指对属性的操作,其命名规则一般采用动词加属性名称形式,如updataName、updataAge、updataWeight等。 举例如下图:
    在这里插入图片描述

在Python3.x中,如果没有显示指明要继承的父类,则默认继承object类。
在这里插入图片描述
Python3.x中,无需继承时,例子中三种类的创建效果一样。自动继承object类。
新式类添加了一些内置属性和方法,如下所示:






__name__ :属性的名字 __doc__ :属性的文档字符串 __get__(object) :获取对象属性值的方法 __set__(object, value) :设置对象属性值的方法 __delete__(object, value) :删除对象属性的方法 

7.2.2 对象的创建

7.2.3 类的属性

类的定义由属性和方法组成,属性是对数据的封装,方法则是对类行为的封装。属性按使用范围分为公有属性私有属性,使用范围取决于属性名称。类的属性如下表所示。
在这里插入图片描述
内置属性如下表所示:
在这里插入图片描述
在这里插入图片描述








7.2.4 类的方法

7.2.5 内部类

7.2.6 魔术方法

在Python语言中,所有以双下划线“__”包起来的方法,都统称为“魔术方法”。 这些方法在实例化时会自动调用, 比如“_str__()”、“__init__()”、“__del__()”等。 使用魔术方法可以构造出非常优美的代码,比如将复杂的逻辑封装成简单的API等。 
魔术方法中的“__init__()”方法一般叫做构造函数,用于初始化类的内部状态和参数。 如果不提供,Python语言会给出一个默认的“__init__()”方法 魔术方法中的“__ del __()”函数叫做析构函数,用于释放对象占用的资源。“__del__()”函数是可选的, 如果不提供,Python语言会在后台提供默认析构函数。 魔术方法中,有些可以实现属性访问控制的功能,如“__getattr__(self,name), “__setattr__(self,name,value)”方法等。 

7.3 类间关系

7.3.1 依赖关系

7.3.2 关联关系

7.3.3 继承关系

在Python语言中使用继承机制时,有以下几点需要注意:

1)子类拥有父类的属性和方法。 (2)子类可以创建自己属性和方法。 (3)子类可以对父类的方法进行覆盖实现。 (4)子类可重新定义父类中的属性。 (5)一个父类可由多个子类继承,一个子类也可继承多个父类。 (6)如果父类定义了__init__()方法,子类也定义了自己的__init__()方法并且还要使用父类的__init__()方法, 子类需要显式调用父类的__init__()方法。如果子类需要扩展父类的初始化行为,可以添加__init__()方法参数。 (7)当继承的多个父类中有相同的属性或方法时,会使用最后一个继承父类的属性或方法。 

7.4 总结

  • 通过介绍面向对象的产生由来和核心思想,使初学者认识面向对象编程的基本概念。
  • 通过介绍Python语言中类和对象定义和使用的基本概念、流程,使得开发者了解Python语言中面向对象编程的基本流程,并初步掌握面向对象编程的方法。
  • 介绍了Python语言面向对象编程时类之间关系的相关知识,包括依赖关系、关联关系、继承关系等。

7.5 每日分享

什么叫做心外无物
我给出的例子就是:你拿1万元现金和一把香蕉放在一个猴子面前,它会毫不犹豫的选择香蕉,因为它知道香蕉可以吃,但不知道1万块钱能买很多香蕉,在猴子看来,那一打钱什么都不是,这就是心外无物。

我见识了一个学生的为了掩盖自己见不得光的行为,撒了无数的谎话,在ta看来撒谎根本就不是事,为什么呢?因为ta心里没有礼义廉耻,所以ta并不会因为撒谎而羞愧。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209367.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午9:24
下一篇 2026年3月19日 上午9:25


相关推荐

  • VBScript 语法错误VBScript 运行时错误

    VBScript 语法错误VBScript 运行时错误出处 http beyondajun blogchina com 1163228 htmlVBScript 语法错误如果 VBScript 语句结构违反了一个或多个 VBScript 脚本语言语法规则 就会产生 VBScript 语法错误 错误通常在执行程序前 编译程序时产生 以下是 53 个语法错误 错误编号描述十进制十六进制说明 1001800A03E9 内存不足 1002800A03

    2026年1月28日
    2
  • 模板制作AI助手(Beta)

    模板制作AI助手(Beta)

    2026年3月12日
    3
  • JDK新特性-Lambda表达式的神操作

    JDK新特性-Lambda表达式的神操作

    2020年11月20日
    203
  • nginx配置访问本地静态资源

    nginx配置访问本地静态资源nginx作为一款高性能的服务器,用途很多,除了可以做后端服务器的代理,负载均衡之外你,还有一个用途就是做静态资源的缓存服务器,比如在前后端分离的项目中,为了加速前端页面的响应速度,我们可以将前端的相关资源,例如html,js,css或者图片等放到nginx指定的目录下,访问的时候只需要通过IP加路径就可以实现高效快速的访问,下面说说如何在windows下使用nginx作为静态资源服务器,1、……

    2022年7月14日
    161
  • pre标签

    pre标签今天正式开始学习前端的 HTML 部分 虽然以前有接触 但是今天学到一个新标签 pre 预编排标签 pre 可以使文本完全按照源文件中的编排格式 一模一样地在浏览器中显示 pre 标签的一个常见应用就是用来表示计算机的源代码 可以导致段落断开的标签 例如标题 p 和 address 标签 绝不能包含在 pre 所定义的块里 尽管有些浏览器会把段落结束标签解释为简单地换行 但是这种行为在

    2026年3月19日
    2
  • 中标麒麟高级服务器操作系统V6

    中标麒麟高级服务器操作系统V6本镜像有两个月的免费试用期!免费试用期结束后,如果您希望购买正式版。请与我们联系。(400-706-1825)中标麒麟高级服务器操作系统镜像不仅为用户提供了中文化的系统环境和图形化的管理工具,同

    2022年7月2日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号