• Python 06 之面向对象基础


    😀前言
    在日常编程和软件开发中,我们通常会遇到各种各样的问题,其中很多问题都可以通过面向对象的程序设计方法来解决。面向对象编程不仅可以使代码更加组织化和系统化,而且还可以提高代码的重用性和可维护性。
    .
    在本教程中,我们将探索Python语言中面向对象编程的基本概念。我们将从最基本的类和对象的定义开始,然后深入探讨类的属性和方法,以及如何使用特殊的类方法来控制对象的初始化、表示和销毁过程。
    .
    我们将通过实际的代码示例来逐一讨论这些概念,以帮助你更好地理解和掌握Python的面向对象编程。

    🏠个人主页:尘觉主页
    在这里插入图片描述

    🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉

    在csdn获奖荣誉: 🏆csdn城市之星2名
    ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 💓Java全栈群星计划top前5
    ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 🤗 端午大礼包获得者
    ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 🥰阿里云专家博主
    ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 😉亚马逊DyamoDB结营

    💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
    如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦😊

    Python 06 之面向对象基础

    1、概念

    1.1 面向函数的编程方式:

    1、把某个需求的所有步骤,比如加减乘除,从头到尾逐步实现;

    2、根据开发需求,将某些功能独立的代码。比如加法,封装成一个又一个函数。

    3、最后,我们就是有顺序的调用不同的函数就可以了。

    1.2 ⾯向对象的编程方式

    相⽐较函数,⾯向对象是更⼤的封装,根据职责在⼀个对象中封装多个⽅法

    1. 在完成某⼀个需求前,首先确定职责 —— 要做的事情(⽅法) ;

    2. 根据职责确定不同的对象,在对象内部封装不同的⽅法;

    3. 最后完成的代码,就是顺序地让不同的对象调⽤不同的⽅法。

    1.3 类和对象的概念

    类和对象是⾯向对象编程的两个核⼼概念。

    类:类是对⼀群具有相同特征或者⾏为的事物的⼀个统称,是抽象的,不能直接使⽤ 。

    比如,人相当于一个类:身高,性别,年龄。这些特征称为属性,而吃饭,跑步,喝水,这些行为则称为方法。

    对象:对象是由类创建出来的⼀个具体存在,可以直接使⽤。

    由哪⼀个类创建出来的对象,就拥有在哪⼀个类中定义的 属性 和⽅法 。

    1.4 类和对象的关系

    类是模板,对象是根据类这个模板创建出来的,应该先有类,再有对象 ;

    • 类只有⼀个,⽽对象可以有很多个 ;
    • 不同的对象之间属性可能会各不相同 ;
    • 类中定义了什么属性和⽅法,对象中就有什么属性和⽅法,不可能多,也不可能少 。

    1.5 类的设计

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

    1. 类名 这类事物的名字 ; 人
    2. 属性 这类事物具有什么样的特征 ; 身高,年龄。性别
    3. ⽅法 这类事物具有什么样的⾏为。 吃,喝,玩,乐。

    1.6 属性和⽅法的确定

    1. 对于对象的特征描述,通常可以定义成属性 ,属性的具体实现可以是一个 变量;
    2. 对象具有的⾏为(动词),通常可以定义成⽅法,方法的具体实现可以是一个类里面的函数 ;

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

    2、语法

    2.1、 class 关键字

    class 关键字用于创建一个类,语法如下:

    class 类名: 
        def ⽅法 1(self, 参数列表): 
        pass
    
    • 1
    • 2
    • 3

    ⽅法的定义格式和之前学习过的函数⼏乎⼀样 ;

    区别在于第⼀个参数必须是 self 。

    示例:

    class Cat:
        def eat(self, name):
            print(name + "吃饭")
     
        def drink(self, name):
            print(name + "喝水")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.2 创建一个对象

    1. 实例------通过类创建出来的对象叫做类的实例;
    2. 实例化------创建对象的动作叫做实例化 。

    语法:

    对象名 = 类名(参数列表)

    # 定义Cat类
    class Cat:
        def eat(self, name):
            print(name + "吃饭")
     
        def drink(self, name):
            print(name + "喝水")
     
     
    # 创建Cat 类
    cat = Cat();
    # 调用Cat 吃饭的方法
    cat.eat("小白");
    # 调用Cat 喝水的方法
    cat.drink("小黑")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    image-20230903170058678

    2.3 方法中的 self 参数

    • 在类封装的⽅法内部, self 就表示调用方法的对象自己 ;

    • 调⽤⽅法时,不需要传递 self 参数 ;

    • 在方法内部可以通过 self. 访问对象的属性;

      • 通过在方法内部使用 self.属性名 = 值,为类添加属性
    • 在方法内部可以通过 self. 调⽤对象的⽅法;

    • 在类的外部,通过 对象名. 访问对象的属性和⽅法 。

    # 定义Cat类
    class Cat:
        def set_name(self, name):
            self.name = name
     
        def eat(self):
            print(self.name + "吃饭")
     
        def drink(self):
            print(self.name + "喝水")
     
     
    # 创建Cat 类
    cat = Cat();
    # 调用 set_name 方法
    cat.set_name("小白")
    # 调用Cat 吃饭的方法
    cat.eat();
    # 调用Cat 喝水的方法
    cat.drink()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    image-20230903170119013

    3、 init方法

    3.1 iniit 初始化方法

    init就是对象的初始化⽅法, init 是对象的内置⽅法。

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

    1. 为对象在内存中分配空间 —— 创建对象 ;

    2. 系统自动调用⽅法(__ init__ ) .

    # 定义Cat类
    class Cat:
        def __init__(self):
            self.name = '小白'
     
        def eat(self):
            print(self.name + "吃饭")
     
        def drink(self):
            print(self.name + "喝水")
     
     
    # 创建Cat 类 初始化方法被自动调用
    cat = Cat();
    # 调用Cat 吃饭的方法
    cat.eat();
    # 调用Cat 喝水的方法
    cat.drink()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    带有参数的初始化方法。

    image-20230903170217320

    4、del 方法

    1. del方法只能有一个参数 self;

    2. 当对象在内存中被销毁的时候,del方法被系统自动调用;

    3. 当使⽤ 类名() 创建对象时,为对象分配完空间后,⾃动调⽤ init ⽅法 ;

    4. 当⼀个对象被从内存中销毁前,会⾃动调⽤ del ⽅法 ;

    5. ⼀个对象的 del ⽅法⼀旦被调⽤,对象的生命周期结束 。

    # 定义Cat类
    class Cat:
        def __init__(self,name = "小白"):
            self.name = name
     
        def __del__(self):
            print(self.name+"活动已结束,已回窝睡觉")
     
        def eat(self):
            print(self.name + "吃饭")
     
        def drink(self):
            print(self.name + "喝水")
     
     
    # 创建Cat 类
    cat = Cat();
    # 调用Cat 吃饭的方法
    cat.eat();
    # 调用Cat 喝水的方法
    cat.drink()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    image-20230903170240145

    在函数内定义的变量,函数执行完毕,变量就被销毁了;

    在函数外部定义的变量,程序执行完毕,变量就被销毁了;

    5、str 方法

    在 Python 中,使⽤ print 输出 对象变量,默认情况下,会输出这个变量 引⽤的对象是由哪⼀个类创建的对象,以及在内存中的地址(⼗六进制表示)。

    # 定义Cat类
    class Cat:
        def __init__(self,name = "小白"):
            self.name = name
     
     
    # 创建Cat 类
    cat = Cat();
    # 打印
    print(cat)
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    主要下面的这个内存中的地址每次个机器的不是一样的取决的机器的内存和分配策略 这个不要担心

    image-20230903170421431

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

    注: str ⽅法必须返回⼀个字符串

    # 定义Cat类
    class Cat:
        def __init__(self, name="小黄"):
            self.name = name
    
        def __str__(self):
            return "我是一只可爱的狗狗,名字叫" + self.name
    
    
    # 创建Cat 类
    cat = Cat();
    print(cat)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    能够打印⾃定义的内容, 就可以利⽤ str 这个内置⽅法了。

    注: str ⽅法必须返回⼀个字符串

    # 定义Cat类
    class Cat:
        def __init__(self, name="小黄"):
            self.name = name
    
        def __str__(self):
            return "我是一只可爱的狗狗,名字叫" + self.name
    
    
    # 创建Cat 类
    cat = Cat();
    print(cat)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    image-20230903170630263

    😄总结

    通过本教程,我们已经了解了Python面向对象编程的核心概念,包括类和对象的定义和关系,以及类的特殊方法如__init__、__str__和__del__方法。

    我们学习了如何创建类和对象,如何定义和调用方法,以及如何通过特殊方法来控制对象的创建和销毁过程。我们还学习了如何通过__str__方法来定制对象的字符串表示形式,使其更符合人类的理解和阅读。

    希望通过本教程,你已经掌握了Python面向对象编程的基本知识,这将为你后续的Python编程之旅奠定坚实的基础。

    😁热门专栏推荐
    想学习vue的可以看看这个

    java基础合集

    数据库合集

    redis合集

    nginx合集

    linux合集

    手写机制

    微服务组件

    spring_尘觉

    springMVC

    mybits

    等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持

    🤔欢迎大家加入我的社区 尘觉社区

    文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁
    希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻
    如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

  • 相关阅读:
    Apollo:前端开发者的全栈探索之旅
    数据结构原理与分析知识点
    投资理财基础知识分享(二)
    《go程序语言设计》引言
    配置环境的坑坑洼洼
    最短路径算法-迪杰斯特拉(Dijkstra)算法在c#中的实现和生产应用
    【springboot】手写SpringBoot核心流程
    Spring事务相关
    浅析Spring浅拷贝 BeanUtils.copyProperties方法
    LeetCode:2603. 收集树中金币 详解(2023.9.21 C++)
  • 原文地址:https://blog.csdn.net/apple_67445472/article/details/132917776