Python学习之路-初识面向对象

这篇具有很好参考价值的文章主要介绍了Python学习之路-初识面向对象。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python学习之路-初识面向对象

简介

面向对象编程(英语:Object-oriented programming,缩写:OOP)是种具有对象概念的编程典范,同时也是一种程序开发的抽象方针。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的对象。

我们之前学习的编程方式就是面向过程的,面相过程和面相对象,是两种不同的编程方式,对比面向过程的特点,可以更好地了解什么是面向对象。

特点

面向过程

  • 注重步骤与过程,不注重职责分工

  • 如果需求复杂,代码会变得很复杂

  • 开发复杂项目,没有固定的套路,开发难度很大!

面向对象

  • 注重对象和职责,不同的对象承担不同的职责
  • 更加适合应对复杂的需求变化,是专门应对复杂项目开发,提供的固定套路
  • 需要在面向过程基础上,再学习一些面向对象的语法

{{< admonition tip “提示” true >}}

相比较函数,类是更大的封装,根据职责在一个对象中封装多个方法。在完成某一个需求前,首先确定职责要做的事情(方法),根据职责确定不同的对象,在对象内部封装不同的方法(多个)。最后完成的代码,就是顺序地让不同的对象调用不同的方法

{{< /admonition >}}文章来源地址https://www.toymoban.com/news/detail-813284.html

类和对象

简介

类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用。特征被称为属性,行为被称为方法。

对象是由类创建出来的一个具体存在,可以直接使用。由哪一个类创建出来的对象,就拥有在哪一个类中定义的属性和方法。

关系

类是模板,对象是根据类这个模板创建出来的,应该先有类,再有对象。类只有一个,而对象可以有很多个。不同的对象之间属性可能会各不相同。类中定义了什么属性和方法,对象中就有什么属性和方法,不可能多,也不可能少。

类的设计

在使用面相对象开发前,应该首先分析需求,确定一下,程序中需要包含哪些类!

在程序开发中,要设计一个类,通常需要满足一下三个要素:

  • 类名这类事物的名字,满足大驼峰命名法
  • 属性这类事物具有什么样的特征
  • 方法这类事物具有什么样的行为

{{< admonition tip “提示” true >}}

大驼峰命名法:每一个单词的首字母大写且单词与单词之间没有下划线,如ClassName

{{< /admonition >}}

类名

名词提炼法分析整个业务流程,出现的名词,通常就是找到的类

属性和方法
  • 对对象的特征描述,通常可以定义成属性
  • 对象具有的行为(动词),通常可以定义成方法

{{< admonition tip “提示” true >}}

需求中没有涉及的属性或者方法在设计类时,不需要考虑

{{< /admonition >}}

基础语法

定义简单的类

定义一个只包含方法的类语法格式如下:

class 类名:

    def 方法1(self, 参数列表):
        pass
    
    def 方法2(self, 参数列表):
        pass

{{< admonition tip “提示” true >}}

方法的定义格式和之前学习过的函数几乎一样,区别在于第一个参数必须是self,暂时先记住,稍后介绍 self

{{< /admonition >}}

创建对象

当一个类定义完成之后,要使用这个类来创建对象,语法格式如下:

对象变量 = 类名()

方法中的 self 参数

由哪一个对象调用的方法,方法内的 self 就是哪一个对象的引用

{{< admonition tip “提示” true >}}

在面向对象开发中,引用的概念是同样适用的。使用类创建对象之后,对象的变量中仍然记录的是对象在内存中的地址,也就是对象的变量引用了新建的类对象。使用 print 输出对象变量,默认情况下,是能够输出这个变量引用的对象是由哪一个类创建的对象,以及在内存中的地址(十六进制表示)

{{< /admonition >}}

在类封装的方法内部,self 就表示当前调用方法的对象自己。调用方法时,程序员不需要传递self参数。

在方法内部,可以通过 self. 访问对象的属性,也可以通过 self. 调用其他的对象方法。

在类的外部,通过 变量名. 访问对象的属性和方法,在类封装的方法中,通过 self. 访问对象的属性和方法。

初始化方法

当使用 类名() 创建对象时,会自动执行以下操作:

  1. 为对象在内存中分配空间 —— 创建对象
  2. 为对象的属性设置初始值 —— 初始化方法(init)

{{< admonition tip “提示” true >}}

初始化方法就是 __init__ 方法,__init__ 是对象的内置方法,__init__ 方法是 专门用来定义一个类具有哪些属性的方法

{{< /admonition >}}

__init__ 方法内部使用 self.属性名 = 属性的初始值 就可以定义属性,定义属性之后,再使用类创建的对象,都会拥有该属性。

内置方法和属性

__del__方法

当使用 类名() 创建对象时,为对象分配完空间后,自动调用 __init__ 方法,当一个对象被从内存中销毁前,会自动调用 __del__ 方法。

{{< admonition tip “提示” true >}}

__init__ 改造初始化方法,可以让创建对象更加灵活,__del__ 如果希望在对象被销毁前,再做一些事情,可以考虑一下 __del__ 方法

{{< /admonition >}}

{{< admonition tip “提示” true >}}

对象的生命周期,一个对象从调用 类名() 创建,生命周期开始,一个对象的 __del__ 方法一旦被调用,生命周期结束,在对象的生命周期内,可以访问对象属性,或者让对象调用方法。

{{< /admonition >}}

__str__方法

如果在开发中,希望使用 print 输出对象变量时,能够打印自定义的内容,就可以利用__str__这个内置方法了

{{< admonition tip “提示” true >}}

__str__ 方法必须返回一个字符串

{{< /admonition >}}

到了这里,关于Python学习之路-初识面向对象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python学习笔记(二十)————面向对象

    (1)面向对象的好处 在日常中,记录数据时往往使用统一的表格,这样就不会使得数据信息格式混乱,同样在程序中的数据组织中,仅仅通过变量来记录会显得混乱不统一。 在程序中是可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的。 1. 在程序中 设

    2024年02月13日
    浏览(40)
  • 【python学习】面向对象编程1

    流水线形式 优点:逻辑清晰 (逻辑一步一步的,是一个系统) 缺点:扩展性差 (上一个函数的输出是下一个函数的输入) 对象是什么? Python中一切皆对象 对象:就是特征和技能的结合体。 面向对象编程:定义初一个个鲜明独特的对象,然后通过对象之间的交互编程。 优

    2024年01月22日
    浏览(65)
  • 【python学习】面向对象编程3

    面向过程编程:类似于工厂的流水线。 优点:逻辑清晰; 缺点:扩展性差。 面向对象编程:核心是对象二字,对象是属性和方法的集合体,面向对象编程就是一堆对象交互。 优点:扩展性强; 缺点:逻辑非常乱。 对象:属性和方法的集合体。 类:一系列相同属性和方法的

    2024年01月22日
    浏览(38)
  • Python面向对象学习整理(二)

    3.1 使用继承 示例代码如下 我们在上面的代码找那个分别编写了 pipi 类 和 dandan 类,它们分别继承于 Dog 类,因此他们都会具备 Dog 类具有的属性和方法,然后他们也可以拥有他们独有的属性和方法 3.2 方法的覆盖 3.2.1 一般的方法覆盖情况 假设有这种情况,子类和父类拥有同

    2024年02月16日
    浏览(34)
  • Golang之路---03 面向对象——类型断言

    作用 检查 i 是否为 nil 检查 i 存储的值是否为某个类型 使用方式 第一种: 这个表达式可以 断言一个接口对象(i)里不是 nil,并且接口对象(i)存储的值的类型是 T ,如果断言成功,就会返回值给 t,如果断言失败,就会触发 panic。(即nil或者接口对象类型不为T时均会触发

    2024年02月14日
    浏览(32)
  • python学习笔记:第七章面向对象

    与java类似,python作为一种面向对象的编程语言,也可以创建自定义的对象和类。 它的特性主要有:继承,封装,多态,方法,属性,超类 两者转换 每个类对应每个对象,下面有类变量 起到封装变量,封装函数,代码的作用 格式 实例化类,给类赋值 在创建对象时,就会被

    2024年02月13日
    浏览(40)
  • 【零基础??天速成 Java】Day2 - 初识面向对象

    目录 前言 1. 可变参数的使用 2. 构造器 3. 包 1、包的创建 2、包的使用 3、包的命名规范 4、常用的包 5. 访问修饰符 6. 继承  7. super 8. 方法重写 Override 写在最后: 我的 java 基础学习,跟的是韩顺平的 java 课程~ 本篇文章涵盖视频 216 ~ 305 集里面 java 与 C++ 不同的知识

    2024年02月12日
    浏览(30)
  • Python基础之面向对象:8、面向对象之元类

    目录 面向对象之元类 一、什么是元类 二、元类推导流程 三、创建类的方式 方式一: 方式二: 四、元类定制类的产生行为 五、元类定制对象的产生行为 六、元类之双下new Python中一切皆为对象,对象是有类实例化生成; 类也是对象(类对象),生成类对象的类可称之为元

    2024年01月20日
    浏览(46)
  • 设计模式学习笔记 - 面向对象 - 3.面向对象比面向过程有哪些优势?面向过程真的过时了吗?

    在过往的工作中,我发现很多人搞不清面向对象和面向过程的区别,总认为使用面向对象编程语言来开发,就是在面向面向对象编程了。而实际上,他们只是在用面向对象编程语言,编写面向过程风格的代码而已,并没有发挥面向对象编程的优势。这就相当于手握一把屠龙刀

    2024年02月22日
    浏览(36)
  • 学习笔记整理-面向对象-01-认识对象

    1. 对象 对象(object)是 键值对 的集合,表示属性和值的 映射关系 。 对象的语法 k和v之间用冒号分割,每组 k:v 之间用逗号分割,最后一个 k:v 对后可以不书写逗号。 属性是否加引号 如果对象的属性键名不符合命名规范,则这个键名必须用引号包裹。 属性的访问 可以用 点语

    2024年02月13日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包