Python 06 之面向对象基础

2023-09-16 13:51:36

😀前言
在日常编程和软件开发中,我们通常会遇到各种各样的问题,其中很多问题都可以通过面向对象的程序设计方法来解决。面向对象编程不仅可以使代码更加组织化和系统化,而且还可以提高代码的重用性和可维护性。
.
在本教程中,我们将探索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

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

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

示例:

class Cat:
    def eat(self, name):
        print(name + "吃饭")
 
    def drink(self, name):
        print(name + "喝水")

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("小黑")

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()

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()

带有参数的初始化方法。

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()

image-20230903170240145

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

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

5、str 方法

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

# 定义Cat类
class Cat:
    def __init__(self,name = "小白"):
        self.name = name
 
 
# 创建Cat 类
cat = Cat();
# 打印
print(cat)
 

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

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)

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

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

# 定义Cat类
class Cat:
    def __init__(self, name="小黄"):
        self.name = name

    def __str__(self):
        return "我是一只可爱的狗狗,名字叫" + self.name


# 创建Cat 类
cat = Cat();
print(cat)

image-20230903170630263

😄总结

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

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

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

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

java基础合集

数据库合集

redis合集

nginx合集

linux合集

手写机制

微服务组件

spring_尘觉

springMVC

mybits

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

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

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

更多推荐

前端工程化小记

1.引言工作中,我们是否经常遇到以下情况:接手其他同事的代码非常痛苦,比如:缩进,换行等等代码风格这些一度让人浑身难受某个同事经常提语法报错的代码,语法报错只能用肉眼一个个review代码,完全没有提示同事每个人写的commit风格都不一样,也有偷懒的,一个单词搞定的,但是也不描述本次更改是属于什么范畴?比如:是加功能

前端JavaScript中MutationObserver:监测DOM变化的强大工具

🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!目录引言1.MutationObserver简介2.MutationObserver的属性3.MutationObserver的应用场景3.1动态内容加载3.2表单验证3.响应式布局3.4自定义组件开发4.使用Mu

Python 人工智能编程指南:基础、库和工具大全解析

Python已成为人工智能(AI)和机器学习领域的通用语言。其广泛的应用、强大的库生态系统和用户友好的语法使其成为人工智能爱好者、数据科学家和研究人员的理想选择。在这份综合指南中,我们将探讨用于AI编程的Python基础知识,深入研究关键库,并重点介绍AI开发的基本工具。Python:人工智能的语言Python在人工智

按图搜索淘宝商品(拍立淘)API接口 搜爆款商品 图片搜索功能api 调用示例

接口名称:item_search_img公共参数请求地址:测试item_search_img名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,ite

【优测云服务平台】教你玩转小程序压测

上一篇小优分享了《【压力测试指南】没有任何文档,小白也可以做的压力测试》,但对应一些零售电商、直播类的应用,其关联的小程序有很高的使用频率,小程序的压测也必不可少。那么,今天我们继续聊聊:在没有任何文档的前提下,小程序的压力测试该怎么做?一、前言开始前,我们先来看看常见的小程序压测场景:要上线新系统/新功能,需要探知小

C++之互斥锁、读写锁、互斥量、 信号量、原子锁机制总结(二百二十五)

简介:CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀人生格言:人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.更多原创,欢迎关注:Android系统攻城狮1.前言本篇目的:C++之

Python——urllib库

urllib是一个用来处理网络请求的python内置库。一.基本使用二.一个类型和6个方法2.1一个类型urllib的request库中urlopen方法返回的类型:<class'http.client.HTTPResponse'>。为了与之后request库做区别。2.26个方法read()方法:获得响应正文,按字节

基于Java+vue前后端分离学习交流论坛设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌🍅文末获取源码联系🍅👇🏻精彩专栏推荐订阅👇🏻不然下次找不到哟2022-2024年最全的计算机软件毕业设计选题

rv1126之isp黑电平(BLC)校准!

前言:大家好,今天我们继续来讲解isp第二期内容,这期内容主要分三个部分:1、tunning的工作流程2、利用RKISP2.x_Tuner来创建tunning工程,并连接上rv1126开发板进行抓图3、BLC(黑电平校准)的原理和校准方法以及实战那对于RKISP2.x_Tuner的工具使用,这个在第一期的内容里面有详细

从零开始在树莓派上搭建WordPress博客网站并实现公网访问

文章目录序幕概述1.安装PHP2.安装MySQL数据库3.安装Wordpress4.设置您的WordPress数据库设置MySQL/MariaDB创建WordPress数据库5.WordPressconfiguration6.将WordPress站点发布到公网安装相对URL插件修改config.php配置7.支持好友链

php程序设计的基本原则

单一职责原则(SRP):一个类应该只有一个原因引起变化,即一个类应该只负责一项职责。classUser{private$name;private$email;publicfunction__construct($name,$email){$this->name=$name;$this->email=$email;}pu

热文推荐