[Python公开课]零基础玩转Python进阶篇----第十节:面向对象的编程

简介: [Python公开课]零基础玩转Python进阶篇----第十节:面向对象的编程

📢📢📢📣📣📣 🌻🌻🌻Hello,大家好我叫是Dream呀,一个有趣的Python博主,多多关照😜😜😜 🏅🏅🏅CSDN Python领域优质创作者,大二在读,欢迎大家找我合作学习(文末有VX 想进学习交流群or学习资料 欢迎+++) 💕 入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀 💓最后,愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺 🍉🍉🍉“一万次悲伤,依然会有Dream,我一直在最温暖的地方等你”,唱的就是我!哈哈哈~🌈🌈🌈 🌟🌟🌟✨✨✨

1️⃣ 面向对象编程概述💞💞💞

1.1面向对象编程定义

🐒🐒🐒面向对象的编程,顾名思义就是面向你的男朋友or女朋友(俗称对象),去进行编程! 这时候有的小伙伴会问啦:那我没对象怎么面向对象编程呢~ 答:这个时候你可以跳过面向对象编程,去学习面向单身狗编程 💑 💑 💑

网络异常,图片无法展示
|

哈哈哈,开个玩笑,那什么是真正的面向对象编程呢?🙈🙈🙈 ⏬ 定义⏬ 在现实世界中存在各种不同形态的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象间的关系来描述事物之间的联系,这种思想就是面向对象。

1.2面向过程and面向对象

分别使用面向过程和面向对象来实现五子棋: 1.面向过程: 开始游戏➡️黑子先走➡️绘制画面➡️轮到白子➡️绘制画面➡️判断输赢➡️返回步骤2➡️输出最后结果⬇️⬇️⬇️ 即:先分析解决问题的步骤➡️使用函数把这些步骤以此实现➡️用的时候需要逐个调用函数 2.面向对象: 黑白双方:这两方的行为一样➡️棋盘系统:负责绘制画面➡️规则系统:负责判断诸如犯规、输赢等⬇️⬇️⬇️ 即:把解决问题的事物分为多个对象➡️➡️➡️对象具备解决问题过程中的行为 ⚠️⚠️⚠️ 若加入悔棋功能,面向过程和面向对象,分别怎么实现呢?

⏪面向过程⏩:从输入到判断到显示的一系列步骤都需要改动🔝🔝🔝 ⏪面向对象⏩:只需要改动棋盘对象就可以🔄🔄🔄

2️⃣ 类和对象🍧🍧🍧

2.1类和对象的关系

面向对象编程有两个非常重要的概念:类和对象。对象是面向对象编程的核心。 具有相似特征和行为的事物的集合统称为类。 对象是根据类创建的,一个类可以对应多个对象。 🔹可以把玩具模型看作一个类 🔸把每个玩具看作一个对象

网络异常,图片无法展示
|

2.2类的定义

⏬ 定义⏬ 类是由3部分组成的:

  1. 🕐类的名称:类名。
  2. 🕧类的属性:一组数据,比如性别。
  3. 🕤类的方法:允许进行操作的方法,比如说话。

使用class关键字来声明一个类,基本格式如下: ⏪语法格式⏩

class 类名:
    类的属性
    类的方法

2.3根据类创建对象

1.根据类创建对象的语法格式如下: ⏪语法格式⏩

对象名 = 类名()

2.要想给对象添加属性,可以通过如下方式: ⏪语法格式⏩

对象名.新的属性名 = 值

3️⃣构造方法和析构方法🌘🌘🌘

3.1构造方法

⏬ 定义⏬ 构造方法指的是 __init__方法。 当创建类的实例的时候,系统会自动调用构造方法,从而实现对类进行初始化的操作。

⏪语法格式⏩

class Car:
    def __init__(self):
        self.color = '黑色'
    def toot(self):
         print("%s的车在鸣笛..."%(self.color))

◀️ 调用⬇️方法 ▶️

bmw = Car()
bmw.toot()

3.2析构方法

⏬ 定义⏬ 当删除一个对象来释放类所占用资源的时候,Python解释器默认会调用另外一个方法,这个方法就是__del__( )方法。 __del__方法被称为析构方法。

4️⃣self的使用🔦🔦🔦

⏬ 定义⏬ 在方法的列表中,第1个参数永远都是self。 ♨️self的字面意思是自己,我们可以把它当做C++里面的this指针理解,表示的是对象自身。 当某个对象调用方法的时候,Python解释器会把这个对象作为第1个参数传给self,开发者只需要传递后面的参数就可以了。

⏪语法格式⏩

class Dog:
    def __init__(self, newColor):
        self.color = newColor
    def printColor(self):
         print("颜色为:%s"%self.color)

◀️ 调用⬇️方法 ▶️

dog1 =  Dog("白色")
dog1.printColor()

5️⃣封装🍰🍰🍰

⏬ 定义⏬ 封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。 ♨️对于面向对象的封装来说,其实就是使用构造方法将内容封装到 对象 中,然后通过对象直接或者self间接获取被封装的内容。

⏪语法格式⏩

class Person: 
    def __init__(self, name, age): 
        self.name = name 
        self.age = age    
laowang = Person('徐', 30)
laowang.age = 300
print(laowang.age)
# 300

⚠️人的年龄可以随便设置,显然不可行⚠️

为了保护类里面的属性,可以采用如下方式解决: 📍把属性定义为私有属性,即在属性名的前面加上两个下划线; 📍添加用于设置或获取属性值的两个方法供外界调用。

6️⃣继承🎿🎿🎿

⏬ 定义⏬ ✅在现实生活中,继承一般指的是子女继承父辈的财产。 ✅在程序中,继承描述的是事物之间的所属关系。

6.1单继承

类的继承是指在一个现有类的基础上构建一个新的类,构建出来的新类被称作子类。

网络异常,图片无法展示
|
⬅️波斯猫和巴厘猫都继承自猫,而沙皮狗和斑点狗都继承狗➡️

Python程序中,继承使用如下语法格式标注: ⏪语法格式⏩

class 子类名(父类名):

假设有一个类为A,A派生出来了子类B,示例如下: ⏪语法格式⏩

class B(A):
class A(object):

⚠️默认是继承自object的⚠️

6.2 多继承

现实生活中,一个派生类往往会有多个基类。比如沙发床是沙发和床的功能的组合,这都是多重继承的体现。 ⚓️Python支持多继承,多继承就是子类拥有多个父类,并且具有它们共同的特征,即子类继承了父类的方法和属性。⚓️

网络异常,图片无法展示
|
⬅️水鸟拥有了鱼和鸟的特征 ➡️

多继承可以看做是单继承的扩展,语法格式如下: ⏪语法格式⏩

class 子类名(父类1,父类2…):

⬅️如果子类继承的多个父类间是平行的关系,子类先继承的哪个类就会调用哪个类的方法。➡️

7️⃣多态🎇🎇🎇

⏬ 定义⏬ 多态的概念其实不难理解,它是指对不同类型的变量进行相同的操作,它会根据对象(或类)类型的不同而表现出不同的行为。

7.1Python中多态的作用

让具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容(功能)的函数。

7.2Python中多态的特点

🌕1、只关心对象的实例方法是否同名,不关心对象所属的类型; 🌖2、对象所属的类之间,继承关系可有可无; 🌗3、多态的好处可以增加代码的外部调用灵活度,让代码更加通用,兼容性比较强; 🌘4、多态是调用方法的技巧,不会影响到类的内部设计。

⏪语法格式⏩ ⌛️A类:

class A(object):       
    def test(self):
        print("--A--test")

⏳B类:

class B(A):           
    def test(self):  
        print("--B--test")

📈代码展示 📉

class A(object):
    def test(self):
        print("--A--test")
class B(A):
    def test(self):
        print("--B--test")
def func(temp):
    temp.test()
a = A()                
b = B()
func(a)
func(b)
# --A--test
# --B--test

8️⃣类属性和实例属性🎉🎉🎉

8.1类属性

类属性是类所拥有的属性,它需要在类中进行显示地定义(位于类内部,方法的外面),它被所有类的实例对象所共有,在内存中只存在一个副本。

⏪语法格式⏩

class Cat(object):
    #类属性
    num = 0

8.2实例属性

⏰通过“实例.属性”添加属性的属性都是实例属性。 ⏪语法格式⏩

def __init__(self):
    #实例属性
    self.age = 1

9️⃣类方法和静态方法

9.1类方法

📧使用修饰器 @classmethod来标识类方法📧 ⏪语法格式⏩

class 类名:
    @classmethod
    def 类方法名(cls):
        方法体

🎯要想调用类方法,既可以通过对象名调用类方法,又可以通过类名调用类方法,这两种方法没有任何区别。

9.2静态方法

📧使用修饰器 @staticmethod来标识静态方法📧

class 类名:
    @staticmethod
    def 静态方法名():
        方法体

✳️静态方法是没有self参数,在静态方法中无法访问实例变量。 💟静态方法中不可以直接访问类属性,但是可以通过类名引用类属性。 ✴️静态方法跟定义它的类没有直接关系,只是起到了类似函数的作用。

🔟本章小结----知难易🏆🏆🏆

💖🎊本章首先介绍了面向对象编程的基本知识,包括面向对象概述、类和对象、根据类创建对象,然后介绍了 构造方法和析构方法 的使用,然后又介绍了self和__str__方法的简单使用,最后开发了一个反恐游戏的案例。通过对本章内容的学习,大家对面向对象应该有初步的了解,为后面面向对象深入的学习做好铺垫。 🍟然后介绍了面向对象编程的知识,包括面向对象的三大特征(封装、继承和多态,然后介绍了类属性和实例属性,最后介绍了类方法和静态方法。通过对本章内容的学习,大家应该对面向对象有了深入地理解,为面向对象编程埋下了伏笔。🍟

😊😊😊人生是跋涉,也是旅行;是等待,也是重逢;是探险,也是寻宝;是眼泪,也是歌声!

💕💕💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨ 🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~

网络异常,图片无法展示
|
网络异常,图片无法展示
|

目录
相关文章
|
6天前
|
Python
Python编程中的异常处理:理解与实践
【9月更文挑战第14天】在编码的世界里,错误是不可避免的。它们就像路上的绊脚石,让我们的程序跌跌撞撞。但是,如果我们能够预见并优雅地处理这些错误,我们的程序就能像芭蕾舞者一样,即使在跌倒的边缘,也能轻盈地起舞。本文将带你深入了解Python中的异常处理机制,让你的代码在面对意外时,依然能保持优雅和从容。
142 73
|
6天前
|
人工智能 数据挖掘 数据处理
揭秘Python编程之美:从基础到进阶的代码实践之旅
【9月更文挑战第14天】本文将带领读者深入探索Python编程语言的魅力所在。通过简明扼要的示例,我们将揭示Python如何简化复杂问题,提升编程效率。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往高效编码世界的大门。让我们开始这段充满智慧和乐趣的Python编程之旅吧!
|
5天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从零基础到实战应用
【9月更文挑战第15天】本文将引导读者从零开始学习Python编程,通过简单易懂的语言和实例,帮助初学者掌握Python的基本语法和常用库,最终实现一个简单的实战项目。文章结构清晰,分为基础知识、进阶技巧和实战应用三个部分,逐步深入,让读者在学习过程中不断积累经验,提高编程能力。
|
6天前
|
机器学习/深度学习 数据采集 人工智能
探索Python的奥秘:从基础到进阶的编程之旅
在这篇文章中,我们将深入探讨Python编程的基础知识和进阶技巧。通过清晰的解释和实用的示例,无论您是编程新手还是有经验的开发者,都能从中获得有价值的见解。我们将覆盖从变量、数据类型到类和对象的各个方面,助您在编程世界里游刃有余。
23 10
|
2天前
|
人工智能 数据挖掘 开发者
Python编程入门:从基础到实战
【9月更文挑战第18天】本文将带你走进Python的世界,从最基本的语法开始,逐步深入到实际的项目应用。无论你是编程新手,还是有一定基础的开发者,都能在这篇文章中找到你需要的内容。我们将通过详细的代码示例和清晰的解释,让你轻松掌握Python编程。
15 5
|
4天前
|
存储 机器学习/深度学习 数据挖掘
深入浅出:Python编程入门与实践
【9月更文挑战第16天】本文以“深入浅出”的方式,引领读者步入Python编程的世界。从基础语法到实际应用,我们将一步步探索Python的魅力所在。无论你是编程新手,还是希望拓展技能的老手,这篇文章都将为你提供有价值的信息和指导。通过本文的学习,你将能够编写出简单而实用的Python程序,为进一步深入学习打下坚实的基础。让我们一起开始这段编程之旅吧!
|
4天前
|
存储 Python 容器
Python编程基础第二天学习笔记
Python编程的第二天学习是建立在基础概念上的深化和扩展,强调了基本语法、数据类型、控制结构和函数的重要性。通过实践这些概念,可以增强对Python编程语言的理解,并为后续的高级学习打下坚实的基础。继续实践并逐渐探索更复杂的编程任务将有助于巩固和扩展这些基础知识。
25 7
|
4天前
|
机器学习/深度学习 存储 人工智能
探索Python编程的魔法:从基础到进阶
【9月更文挑战第16天】本文将带领你进入Python编程的世界,无论你是初学者还是有一定经验的开发者。我们将一起揭开Python编程的神秘面纱,通过实际案例和代码示例,深入浅出地探讨Python的基础语法、数据结构、面向对象编程以及函数式编程等核心概念。文章旨在提供一条清晰的学习路径,帮助你构建坚实的编程基础,并逐步过渡到更高级的编程技巧。无论你的目标是数据分析、网络开发还是机器学习,这篇文章都将为你打下扎实的基础,让你在编程的道路上越走越远。
17 6
|
4天前
|
机器学习/深度学习 数据挖掘 程序员
Python编程基础:从入门到实践
【9月更文挑战第16天】本文是一篇Python编程的入门教程,旨在帮助初学者理解Python的基本概念和语法。文章首先介绍了Python的历史和特点,然后详细讲解了Python的基本语法,包括变量、数据类型、运算符、控制结构等。接着,文章通过一些实例代码,展示了如何使用Python进行基本的编程操作,如输入输出、条件判断、循环等。最后,文章还提供了一些学习资源和建议,帮助读者进一步学习和掌握Python编程。
|
2天前
|
Python
探索Python编程中的装饰器
【9月更文挑战第18天】本文将深入探讨Python中的一项强大功能——装饰器。通过简化的实例,我们会了解如何创建和使用装饰器来增强函数的功能,同时保持代码的整洁性和可读性。
10 3