目录
面向过程
通俗的说,在解决编程问题时,我们会把需要的操作步骤都列出来,然后按照操作步骤编写代码,这就是面向过程的思想.
比如,要产生一个随机数,1)导入random模块2)产生随机数,3)输出结果
面向对象
面向对象是软件开发方法,一种编程范式。面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。
两者的区别
吃饭
面向过程: 买菜、洗菜、做饭菜、吃
面向对象: 点外卖 [厨师、外卖员]-------------------------------------------------------------------------
打水
面向过程: 拿水杯、去清洗、装水、盖盖子、拿到教室
面向对象: 叫方哥给你打杯水.------------------------------------------------------------------------
玩游戏
面向过程: [我]开机、打游戏、打、xxx、关机; -我玩游戏
面向对象: 我叫人帮我玩游戏. [关注结果]
面向对象的三大特性
面向对象的三大特性:
(1)封装:简单地说,封装就是把对象的属性和方法放在一个整体中,并限制对属性和方法的访问操作。而这里说的整体,就是【类】。
(2)继承:通俗地说,当子类继承了父类后,子类就具有父类的属性和方法。比如,下图的关系。
(3)多态:不同类的对象对同一消息做出不同的响应。这里的发送消息,通常是指调用方法。
类和对象
类是抽象的概念,描述事物的特征
对象是具体的概念,表示实实在在存在的个体.
类
class 类名:
def 方法名(self):
代码1
代码2
...
# 其他方法...
例如,一起来完成:
(1)定义一个汽车类;
(2)让汽车类能跑起来;
(3)执行程序,观察效果。
class Car:
def run(self):
print("汽车能跑起来...")
# 当仅定义了后,执行程序没有效果
对象
# 创建对象的语法
对象名 = 类名()
--
# 调用方法语法
对象名.方法名()
例如,一起来完成:
(1)用对象模拟制造出一台小轿车;
(2)小轿车能跑起来;
(3)执行程序,观察效果。
class Car:
def run(self):
print("汽车能跑起来...")
# 1.创建对象
# 对象名 = 类名()
car = Car()
# 2.调用方法
# 对象名.方法名()
car.run() # 不需要给self传递值
self关键字
self是一个Python关键字,在面向对象中,self指向了对象本身。比如,创建了一个学生对象。
# 定义类
class Student:
pass# 创建对象
student = Student()
例如,一起来完成:
(1)定义一个学生类,且学生在努力学习;
(2)创建一个对象,同时输出对象名、self,了解self的含义;
(3)再到学生类中,定义一个学生睡觉的行为,并分别通过对象名、self调用方法;
# 1.定义学生类 输出self
class Student:
def study(self): # 当前的,当前的对象
print("=======================")
print("正在努力学习!")
print("===============",self) # =============== <__main__.Student object at 0x0000028A576D2DF0>
print("=======================")
# 睡觉
def sleep(self):
# 类内部调用 self = 当前的对象
# 对象名.方法名()
# self.方法名()
self.study()
# 2.输出对象名
stu = Student()
print(stu) # <__main__.Student object at 0x0000021CACD02DF0>
# 调用
stu.study() # self = 当前的对象
对象属性
在现实生活中,属性就表示固有特征,比如:一辆小轿车的属性有轮胎数、颜色、品牌等。
仔细观察后会发现,属性可以简单理解为与生俱来的特征,比如一个人的姓名、年龄、身高、体重等都是属性。
而属性在Python面向对象中,直接使用变量来表示。
需要注意的是,一个对象通常包含两部分:方法、属性。
类外面访问属性
在类外面访问属性,分为:
(1)添加属性
(2)获取属性
# 添加属性语法
对象名.属性名 = 值
----
# 获取属性语法
对象名.属性名
例如
(1)在车类外设置品牌和颜色,和获取属性值并输出结果
class Car(object):
def run(self):
print(f"当前小轿车({self.color} 的 {self.brand})在公路上跑... ...")
if __name__ == '__main__':
c1 = Car()
# 设置当前对象 属性: 设置属性
c1.brand = "五菱宏光"
c1.color = "银色"
# 调用当前对象的 属性: 获取属性
print(c1.brand)
print(c1.color)
# 调用方法
c1.run()
类内部获取属性
# 类内部,获取属性语法
self.属性
例如
在类外部添加2个属性,在类内部定义一个show()方法获取属性信息
class Car(object):
def run(self):
print(f"当前小轿车({self.color} 的 {self.brand})在公路上跑... ...")
def show(self):
print(f"{self.color} 的 {self.brand}")
# return f"{self.color} 的 {self.brand}"
if __name__ == '__main__':
c1 = Car()
# 设置当前对象 属性: 设置属性
c1.brand = "五菱宏光"
c1.color = "红色"
c1.show()
# print(c1.show())
如果在类内部
print(f"{self.color} 的 {self.brand}")
则调用的时候c1.show()
或
return f"{self.color} 的 {self.brand}"
则调用的时候
print(c1.show())