• Python --- 面向对象


    目录

    前言:

    一、面向对象OOP

    1.面向对象

    1)面向对象介绍

    2.类与对象

    1)类

    2)对象

    3)类与对象的关系

    3.类的构成

    1)类的构成

    2)类的定义

    3)创建对象

    4)类的构成

    4.self 参数

    5.牛逼的方法

    1)__init__() 方法

    2)__str__() 方法

    6.私有属性与私有方法

    1)私有属性与私有方法介绍

    2)私有属性

    3)私有方法

    二、面向对象三大特性

    1.封装

    1)封装介绍

     2.继承

    1)继承介绍

    2)继承语法

    3)单继承

    4)重写

    5)super

    6)多继承

    3.多态

    三、常用魔法方法

    1.魔法方法介绍

    2.常用魔法方法

    1)__new__() 方法

    2. __del__() 方法


    前言:

    Python 是一种面向对象的编程语言。

    Python 中的几乎所有东西都是对象,拥有属性和方法。

    一、面向对象OOP

    二、面向对象三大特性

    三、常用方法

    一、面向对象OOP

    1.面向对象
     

    1)面向对象介绍

    面向对象编程:Object Oriented Programming,简称OOP,是一种 程序设计思想
    注意:
    与之对应的是面向过程编程思想。实际上,能够使用面向对象编程思想实现的程序,也
    都能通过面向过程完成。只是看哪种思想更适合当前开发需求。
    面向过程与面向对象区别:
    • 面向过程:根据业务逻辑从上到下写代码
    • 面向对象:将数据与函数绑定到一起,进行封装减少重复代码的重写过程

    2.类与对象

    1)类

    类是抽象的概念,仅仅是模板。用来描述具有相同属性和方法的对象的集合。比如:"人"是一
    个类。

    2)对象

    某一个具体事物的存在 ,在现实世界中可以是看得见摸得着的。 比如:"胡歌"就是一个对象。

    3)类与对象的关系

    那么实际上,我们可以进行 对象归类

    3.类的构成

    1)类的构成

    类主要由 3 部分构成: 3 个部分构成
    类的 名称 ->> 类名
    类的 属性 ->> 一组数据
    类的 方法 ->> 允许对类进行操作的方法

    2)类的定义

    Python 中使用 class 关键字来定义类,其基本结构如下:
    1. class 类名:
    2. pass

    eg:使用名为 x 的属性,创建一个名为 MyClass 的类

    1. class Myclass:
    2. x = 1

    3)创建对象

    在 Python 中,可以根据已经定义的类去创建出一个个对象,语法如下:
    对象名 = 类名()

    eg:创建一个名为 p1 的对象,并打印 x 的值:

    1. class Myclass:
    2. x = 1
    3. p1 = Myclass()
    4. print(p1.x)

    输出:
    1

    4)类的构成

    eg1:实现以下操作
            创建类:学生类
            创建对象:张三
            在类中定义方法输出:张三学习Python

    4.self 参数

    1)self 参数介绍
    在类当中定义方法时,会发现系统帮我们自动创建了 self 参数,并且在调用对象的该方法时,也无
    需传入 self 参数。那这个 self 是什么?
     
    实际上,我们需要明确 self 的两个概念
    • self 本身是 形参
    • self 就是 对象本身
    一、self 参数介绍
    eg1:实现以下操作
            定义类为:学生类
            创建对象:李四
            在类中定义方法:打印李四信息

    5.牛逼的方法

    1)__init__() 方法

    __init__() 方法称为 初始化 方法,也可称为 构造方法 。在 创建对象 时,会 自动执行该方法 ,为对象
    的属性设置初始值。
    eg1:如以下代码,会先输出--1--,还是先输出--2--?
    1. class Student():
    2. def _init_(self):
    3. print("---1---")
    4. bruin = Student()
    5. print("--2--")

    输出:

    --2--

    注意:in_init_()方法只是为对象的属性赋初值,不会有打印输出等的作用.

    2)__str__() 方法

    如果在开发中,希望打印输出对象变量时, 能够打印自定义的内容 。就可以使用__str__()方法,将
    自定义内容通过return关键字返回。
    注意:返回值必须是字符串。

    6.私有属性与私有方法

    1)私有属性与私有方法介绍

    在实际开发中,对象的某些属性或者方法,只希望在对象的内部使用,这时,我们就可以使用私有属性和私有方法。

    2)私有属性

    私有属性:就是对象不希望公开的属性
    定义方式:在属性名前面增加两个下划线(例如:__name)

    eg1:一定要在类的外部访问到对象的私有属性,如何实现?
    方法:
    • 可以通过类的内部的方法访问私有属性
    • 通过类的内部方法将私有属性返回出去
    • 在类的外部调用该方法并且接收就可

    3)私有方法

    私有方法:就是对象不希望公开的方法
    定义方式:在方法名前面增加两个下划线(例如:__test)
    注意:
    在 python 中,并没有真正意义上的私有,只有伪私有。当我们在访问时,以 对象._类名__私有属
    性 即可访问,私有方法同理。但是不建议使用。

    二、面向对象三大特性

    1.封装

    1)封装介绍

    封装是面向对象编程的一大特点,将 属性 方法 放到 类的内部 ,通过对象访问属性或者方
    法,隐藏功能的实现细节,也可以设置访问权限。

     2.继承

    1)继承介绍

    继承是一种创建新类的方式,如果子类需要 复用父类 的属性或者方法时,就可以使用继承。
    当然,子类也可以提供自己的属性和方法。

     作用:避免重复造轮子,减少代码的冗余

    2)继承语法

    语法:
    1. class Father(object):
    2. pass
    3. class Son:
    4. pass
    注意:在 Python3 中,都默认继承 object 基类。

    3)单继承

    子类继承父类,则可以直接享受父类中已经封装好的方法
    总结:当对象调用方法时,查找顺序先从自身类找,如果自身没找到,则去父类找,父类无,
    再到父类的父类找,直到object类,若还无,则报错。这也称为 深度优先机制

     

    4)重写

    注意:当 子类 与 父类 拥有同名称的方法时,子类对象调用该方法 优先执行自身 的方法。那
    么实际上就是子类的方法 覆盖 父类的方法,也称为 重写
    问题:实际的开发中,遵循开放封闭原则。我们并不会完全的重写父类的方法,而是希望同时
    实现父类的功能。

    5)super

    super() 函数是用于调用父类的一个方法。
    语法: super().方法名()

    6)多继承

    所谓多继承,即子类有多个父类,并且具有它们的特征。
    情景1:

     

    • 遵循左边优先原则
    情景2:
    •  左边一条路走到黑

     情景3:

    •  1.左边优先 2.根最后执行

    3.多态

    多态的概念是应用于 Java 和 C# 这一类强类型语言中,而Python崇尚"鸭子类型"。
    动态语言调用实例方法时不检查类型,只要方法存在,参数正确,就可以调用。这就是动态语
    言的“鸭子类型”,它并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像
    鸭子”,那它就可以被看做是鸭子。
    所谓多态:定义时的类型和运行时的类型不一样,此时就成为多态。

    三、常用魔法方法

    1.魔法方法介绍

    在 Python 中,有一些内置好的特定方法,这些方法在进行特定的操作时会 自动 被调用,称
    魔法方法
    魔法方法的命名总是被双下划线包围,比如: __名称__

    2.常用魔法方法

    1)__new__() 方法

    __new__() :用于 创建 返回 一个对象,在类准备将自身实例化时调用。

    1. class Demo(object):
    2. def __init__(self):
    3. print("__init__")
    4. def __new__(cls, *args, **kwargs ):
    5. print("__new__")
    6. d = Demo()
    7. # __new__
    解析
    • __new__() 方法用于创建对象
    • __init__() 方法在对象创建的时候,自动调用。
    • 此处重写了父类的 __new__() 方法,覆盖了父类 __new__() 创建对象的功能,所以对象并没有创建成功。所以仅执行 __new__() 方法内部代码
    对象创建执行顺序
    1. 通过 __new__() 方法创建对象
    2. 并将对象返回,传给 __init__()
    eg1:在自定义类中实现创建对象
    思路:
    • 重写父类 __new__() 方法
    • 并且在该方法内部,调用父类的 __new__() 方法
    __init__() 与 __new__() 区别
    •  __init__ 实例方法,__new__ 静态方法
    • __init__ 在对象创建后自动调用,__new__ 创建对象的方法

    2. __del__() 方法

    __del__() :叫做析构方法。当由该类创建的实例对象,被删除或者说在内存中被释放,将会自动触发执行。
    注意
    • 当代码 全部执行完毕 自动 触发__del__()
    • 如果需要提前触发,则需要通过 del 关键字,删除所有对象后触发__del__()
    注意
    此方法一般不需要定义,因为 Python 是一门高级语言,程序员在使用时无需关心内存的分配与释放,一 般都是交给 Python 解释器来执行。所以,析构函数的调用是由解释器在进行垃圾回收时自动触发执行。
  • 相关阅读:
    中间件漏洞 | Apache-SSI/任意命令执行
    命令行 yes no选择
    Mybatis如何实现分页
    Vivado XADC IP核 使用详解
    小功能丨代码修改物体在 Hierarchy 上顺序
    最短路径之Dijkstra(迪杰斯特拉)路由算法C语言验证
    知识图谱从入门到应用——知识图谱的获取与构建:知识工程与知识获取
    【实战-08】flink DataStream 如何实现去重
    详解“协方差”与“相关系数”
    2022/8/2 考试总结
  • 原文地址:https://blog.csdn.net/m0_63636799/article/details/127346047