• py7_初识 Python 中的 OOP 面向对象编程以及类的方法如何使用 self 传参


    ##################################################

    目录

    活动简介

    简介 POP 与 OOP 编程

    面向过程/POP 与 面向对象/OOP 区别

    为什么会出现 OOP 面向对象编程

    面向对象三大特征

    封装

    继承

    多态

    面向对象编程思想

    什么是类

    什么是对象

    面向对象编程基本步骤

    最通俗易懂的解释就是 new 个对象!

    Python 中的类和对象

    Python 中如何定义一个类

    Python 中类、属性和方法的命名规范

    Python 2 经典类

    Python 3 新型类

    Python 3 的内置属性和方法

    Python 实例化一个对象

    Python 中如何访问类的成员属性和成员方法

    通过实例化对象访问成员属性

    通过类名访问成员属性

    通过类名或示例名调用成员方法并利用 self 进行传参


    ##################################################

    活动简介

    活动地址:CSDN21天学习挑战赛

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰;一个人摸索学习很难坚持,想组团高效学习;想写博客但无从下手,急需写作干货注入能量;热爱写作,愿意让自己成为更好的人…

    欢迎参与CSDN学习挑战赛,成为更好的自己,请参考活动中各位优质专栏博主的免费高质量专栏资源(这部分优质资源是活动限时免费开放喔~),按照自身的学习领域和学习进度学习并记录自己的学习过程,或者按照自己的理解发布专栏学习作品!

    ##################################################

    简介 POP 与 OOP 编程

    ——————————

    面向过程/POP 与 面向对象/OOP 区别

            根据代码的组织方式不同 编程语言大体上可以分为两种 —— 面向对象 与 面向过程

            面向过程语言:

    面向过程就是分析出解决问题所需要的步骤        这是分析步骤
    然后用函数把这些步骤一步一步实现        这是编写函数
    使用的时候再依次调用        这是调用函数
    类似流水线的工作原理        这是解释运行

            面向对象语言:

    面向对象是把构成问题事务分解成各个对象        这是分析步骤
    建立对象的目的不是为了完成一个步骤而是为了描叙某个事物在完整解决问题步骤中的行为        这是编写类和函数
    依靠各个对象之间的交互推动程序执行进而实现问题的解决        这是解释运行过程中发生的事

            对这两种编程机制 Python 均提供了良好支持!

            总体而言 Python 更偏向于成为面向对象编程的编程语言……

    ——————————

    为什么会出现 OOP 面向对象编程

            面向过程编程 Process-Oriented Programming/POP 是根据业务逻辑从上到下写代码 典型的像 C 语言
            使用传统的面向过程编程机制构造系统时 在重用、维护、扩展等方面会出现诸多问题
            并且逻辑过于复杂 代码易读性差

            面向对象的编程是对变量和函数进行分类和封装 让开发更快更好更强
            面向对象的编程 Object-Oriented Programming 缩写为 OOP
            典型如 C++、Java、C# 等

    ——————————

    面向对象三大特征

    %%%%%

    封装

            找到变化并且把她封装起来
    就可以在不影响其她部分的情况下修改或扩展被封装的变化部分
            这是所有设计模式的基础
    封装解决了程序的可扩展性

    %%%%%

    继承

            子类继承父类
    可以继承父类的方法及属性
            实现了多态以及代码的重用
    解决了系统的重用性和扩展性

    %%%%%

    多态

            接口的多种不同的实现方式即为多态
            接口的主要目的是为不相关的类提供通用处理服务
    这实现了系统的可维护性和可扩展性

    ——————————

    面向对象编程思想

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

    对象作为程序的基本单位 将程序和数据封装于其中 以提高程序的重用性、灵活性和可扩展性!

            类是创建对象的模板 而对象是类的实例化 一个类可以创建多个对象!

            实例化是指在面向对象的编程中用类创建对象的过程我们称之为实例化:

    实例化是将一个抽象的概念类
    实例化是具体到该类的一个实物实体的过程

    %%%%%

    什么是类

            类

            是泛指

            是对实体的总结抽象

            例如植物类

            例如生物类

            例如用品类

    %%%%%

    什么是对象

            对象

            是实体

            是现实世界中的类中的一个具体存在的实物

            例如植物类中的 苹果 这是一个对象 或者 香蕉 这也是一个对象

            例如生物类中的 猫猫 或者 狗狗

            例如用品类中的 杯子、碗

    %%%%%

    面向对象编程基本步骤

            OOP 编程最简单的步骤:

            分析哪些动作是由哪些实体发出的        这是分析步骤
            定义这些实体为其增加相应的属性和功能        这是定义类步骤
            让实体去执行相应的功能或动作        这是编写函数创建对象的步骤

            例如:

    1. 动物类可以对狗的特征和行为进行抽象
    2. 例如狗 特征是有颜色有毛 行为是会跑会叫
    3. 然后可以实例化为真实的动物实体
    4. 例如我们可以 new 一个具体的狗对象进行调用!

    %%%%%

    最通俗易懂的解释就是 new 个对象!

            有一个女朋友类 包含了世界上所有的女朋友

            最基本的特征和行为就是 漂亮和做饭

            然后你利用这个女朋友类实例化出来一个女朋友对象

            变量是漂亮程度 函数是做什么饭!!!

    ##################################################

    Python 中的类和对象

    ——————————

    Python 中如何定义一个类

    %%%%%

    Python 中类、属性和方法的命名规范

            类名表示实例的抽象 命名时首字母大写!

            属性使用名词作为名字 例如 name、age、weight 等,,

            方法名一般指对属性的操作 其命名规则一般采用动词加属性名称形式 例如 updataName、updataAge、updataWeight 等。

    %%%%%

    Python 2 经典类

            Python 2 中使用 class 关键字来创建类 不继承 object 类 类内部由属性和方法组成 语法如下:

    1. class 类名:
    2. # 类注释
    3. 属性
    4. 方法

    %%%%%

    Python 3 新型类

            Python 3 中类定义必须继承 object 方法 如果括号中不指定则默认继承 object 类

            解决了诸如多重继承时的歧义等 并且提供了对类方法静态方法的支持 语法如下:

    1. class 类名 ( 父类 )
    2. # 类注释
    3. 属性
    4. 方法

            示例声明:

    1. class ABC:
    2. # 默认继承 object
    3. class Abc():
    4. # 默认继承 object
    5. class Abc ( object ):
    6. # 指定继承 object 类

    %%%%%

    Python 3 的内置属性和方法

            Python 3 新增的内置属性:

    1. __name__ 属性的名字
    2. __doc__ 属性的文档字符串

            内置方法如下:

    1. __get__(object) 获取对象属性值的方法
    2. __set__(object, value) 设置对象属性值的方法
    3. __delete__(object, value) 删除对象属性的方法

    ——————————

    Python 实例化一个对象

            类创建完之后就应该创建该类的实例或对象了 该过程称之为实例化

            当一个对象被创建后 就包含如下这三个对象特性了:

    标识        对象标识用于区分不同的对象

    属性        类中的成员变量

    方法        成员函数

            实例化对象语法:

    对象标识符 = 类名 ( 属性列表 )

    ——————————

    Python 中如何访问类的成员属性和成员方法

    %%%%%

    通过实例化对象访问成员属性

            访问成员属性使用点操作符:

    1. >>> class Lei(): # 创建一个类
    2. ... name = "傻子" # 这里是属性
    3. ... age = 521
    4. ...
    5. >>> me = Lei() # 实例化一个 me 对象
    6. >>> print ( "我的名字是 >>> ", me.name ) # 输出类的 name 属性值
    7. 我的名字是 >>> 傻子
    8. >>> me.name = "大傻几" # 修改类的 name 属性值
    9. >>> print ( "我的名字是 >>> ", me.name ) # 再次输出
    10. 我的名字是 >>> 大傻几
    11. >>>

    %%%%%

    通过类名访问成员属性

    1. >>> class Lei(): # 创建一个类
    2. ... name = "傻子" # 这里是属性
    3. ...
    4. >>> Lei.name # 通过类名访问成员属性
    5. '傻子'
    6. >>>

    %%%%%

    通过类名或示例名调用成员方法并利用 self 进行传参

            这个 self 真的很重要!!!如果你不加上就会出现各种各样的 bug ……

            self 参数很重要!而且是自动传入的不需要指定

    self 表示当前实例对象本身而不是当前类!

    self 只会出现在类的方法中

            VSCode code:

    1. class Test: # 声明 Test 类
    2. age = 521 # 声明 age 参数 默认 521
    3. def getAge(self):
    4. # 获取该 Test 类的 age 值
    5. print ( "年龄 >>> ", self.age )
    6. def setAge ( self, sAge ):
    7. # 设置该 Test 类的 age 值
    8. self.age = sAge
    9. print ( "年龄 <<< ", self.age )
    10. test_1 = Test # 实例化 test_1 对象
    11. print ( test_1.age ) # 查看 test_1 对象的 age 值
    12. test_2 = Test() # 实例化 test_2 对象
    13. print()
    14. test_2.setAge(10) # 传参手动设置 test_1 对象的年龄
    15. test_2.getAge() # 查看设置后的 test_1 对象的 age 值

            VSCode demo:

    1. Windows PowerShell
    2. 版权所有 (C) 2014 Microsoft Corporation。保留所有权利。
    3. PS C:\Users\byme> python -u "e:\PY\test.py"
    4. 521
    5. 年龄 <<< 10
    6. 年龄 >>> 10
    7. PS C:\Users\byme>

    通过类名或示例名调用成员方法并传参

  • 相关阅读:
    tinymce实现导入word功能
    (论文阅读32/100)Flowing convnets for human pose estimation in videos
    JVM性能调优的6大步骤,及关键调优参数详解
    OpenAI官方吴达恩《ChatGPT Prompt Engineering 提示词工程师》(4)推理/Inferring
    《入门级-Cocos2dx4.0 塔防游戏开发》---第十一课:游戏地图信息初始化
    DHorse系列文章之多环境标识
    HCIA-Security -- 防火墙安全策略
    C++的extern关键字在HotSpot VM中的重要应用
    C# 异步日志记录类,方便下次使用,不用重复造轮子
    Vue指令
  • 原文地址:https://blog.csdn.net/m0_67268286/article/details/126220377