文章目录
- [1. 什么是面向对象](#1. 什么是面向对象)
-
- [1.1 常见的编程思想](#1.1 常见的编程思想)
- [1.2 面向过程是什么](#1.2 面向过程是什么)
- [1.3 什么是面向对象](#1.3 什么是面向对象)
- [1.4 封装](#1.4 封装)
- [1.5 继承](#1.5 继承)
- [1.6 多态](#1.6 多态)
- [2. 面向对象的概念](#2. 面向对象的概念)
-
- [2.1 两个重要概念:类和对象](#2.1 两个重要概念:类和对象)
- [2.2 类](#2.2 类)
- [2.3 对象](#2.3 对象)
- [2.4 self关键字](#2.4 self关键字)
- [3. 对象属性](#3. 对象属性)
-
- [3.1 什么是属性](#3.1 什么是属性)
- [3.2 类外面访问属性](#3.2 类外面访问属性)
- [3.3 类内部获取属性](#3.3 类内部获取属性)
1. 什么是面向对象
1.1 常见的编程思想
编程思想
就是:利用计算机来解决实际编程问题的一种思维方式
。而编程思想是通用的,与计算机语言本身没有太大关系。
常见的编程思想有:
(1)面向过程
(2)面向对象
注意:Python同时支持面向过程和面向对象的编程语言!
1.2 面向过程是什么
面向过程是一种以过程为中心的编程思想。
通俗地说,在解决编程问题时,我们会把需要的步骤都列出来,然后按照操作步骤写代码,这种思维就是面向过程思想。
说明:比如,要产生第一个随机数,步骤:
(1)导入random模块
(2)产生随机数
(3)输出结果
使用面向过程思维来了解:使用ATM机取钱的过程。
(1)带上银行卡,去ATM机所在的地方;
(2)排队等待;
(3)轮到自己了,把银行卡插入ATM机;
(4)输入密码,取钱;
(5)取钱成功。
1.3 什么是面向对象
面向对象是软件开发方法,一种编程范式。面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。
python
# 学生:姓名、年龄 ;工作、赚钱
# 1. 先定义
class student:
def __init__(self, name, age):
self.name = name
self.age = age
def work(self):
print("好好工作")
def money(self):
print(f"{self.age}岁的{self.name}在努力赚钱... ...")
# 2. 后调用
stu = student("刘向阳",23)
print(stu.name)
print(stu.age)
#调用
stu.work()
stu.money()
# 总结:
# 1. 封装后的代码执行后不能立马有效果 ==抽象
# # 2. 一切皆对象:类 ==> 对象
# # 3. 类:包含两部分: 变量、方法
通俗地说,面向对象思想就是:当解决问题的视角不再是详细的操作步骤,而是另一个视角:操作对象。比如:操作手机打电话、操作电脑看电影等。
对象可以是:手机、电脑等一切事物。
面向对象思想优势:
(1)在现实生活中,所有事物都被看作是对象;
(2)面向对象的宗旨:模拟现实世界中的一切事物;
(3)贴近实际生活,给所有对象都赋予属性和方法,更加人性化。
1.4 封装
面向对象的三大特性
:
(1)封装
(2)继承
(3)多态
在现实生活中,也有很多与封装的案例。
比如,小刘是一个IT公司的程序员。
小刘身边的人 | 了解小刘的隐私内容项 |
---|---|
银行柜员 | 身份证号、联系方式、银行卡号等。 |
同事 | 姓名、职位、性别、年龄等。 |
爸妈 | 血型、身份证号、女朋友姓名、性别等。 |
类似的,在Python面向对象中也有封装。
简单地说,封装就是把对象的属性和方法放在一个整体中,并限制对属性和方法的访问操作。而这里说的整体,就是【类】。
class 类名:
def 方法名():
属性1 = 值1
属性2 = 值2
...
def 方法名2():
执行代码1
执行代码2
...
例如,在下图日常生活中常见的画面,哪些可以封装成一个类?
一切皆对象
电脑
手机
数据线
...
1.5 继承
在现实生活中,继承一般指的是子女继承父辈的财产,比如:子承父业等。
类似的,面向对象继承也有继承父类的意思。当子类继承了父类后,子类就具有父类的属性和方法。
说明:继承
都满足:is-a
关系。
1.6 多态
多态指的是:不同类的对象对同一消息做出不同的响应。这里的发送消息,通常是指调用方法。
通过生活案例来说明什么是多态,比如:电脑键盘上的F12功能键是固定不变的,但完成功能不同。
固定不变的F12功能键 | 完成功能 |
---|---|
F12 | 在WPS办公软件使用时,提示用户保存文件。 |
F12 | 在Notepad++编辑软件使用时,会把工作区间进行全屏显示。 |
F12 | 在Chrome浏览器使用时,能进入到开发者模式。 |
2. 面向对象的概念
2.1 两个重要概念:类和对象
要掌握Python面向对象的特性,首先需要了解两个重要概念:类、对象。
我们通过公司职员-张三为例子来解释说明。
类是抽象的概念,指的是:对某些事物的描述。
对象是具体的概念,指的是:实实在在存在的个体。
2.2 类
类是抽象的概念,指的是:对某些事物的描述。简单地说,类就是一个模板。
定义Python类语法:
python
class 类名:
def 方法名(self):
代码1
代码2
...
# 其他方法...
例如,一起来完成:
(1)定义一个学生类;
(2)让这个学生努力学习;
(3)执行程序,观察效果。
python
class student:
def student(self):
print("要努力学习")
# 当仅定义了后,执行程序没有效果
2.3 对象
对象是具体的概念,指的是:实实在在存在的个体。简单的说,对象就是通过类创建出来的实体。
创建对象
语法:
- 对象名 = 类名()
调用方法
语法: - 对象名.方法名()
说明:不用给self参数传递参数值。
例如,一起来完成:
(1)用对象模拟制造出一台小轿车;
(2)小轿车能跑起来;
(3)执行程序,观察效果。
python
class Car:
def run(self):
print("小轿车能跑起来...")
# 1.创建对象
# 对象名 = 类名()
car = Car()
# 2.调用方法
# 对象名.方法名()
car.run() # 不需要给self传递值
2.4 self关键字
self是一个Python关键字,在面向对象中,self指向了对象本身。比如,创建了一个学生对象。
python
# 定义类
class Student:
pass
# 创建对象
student = Student()
例如,一起来完成:
(1)定义一个学生类,且学生在努力学习;
(2)创建一个对象,同时输出对象名、self,了解self的含义;
(3)再到学生类中,定义一个学生睡觉的行为,并分别通过对象名、self调用方法;
(4)执行程序,观察self的效果。
python
# 1.定义学生类 输出self
class Student:
def study(self): # 当前的,当前的对象
print("=======================")
print("正在努力学习!")
print("===============",self)
print("=======================")
# 睡觉
def sleep(self):
# 类内部调用 self = 当前的对象
# 对象名.方法名()
# self.方法名()
self.study()
# 2.输出对象名
stu = Student()
print(stu)
# 调用
stu.study() # self = 当前的对象
3. 对象属性
3.1 什么是属性
在现实生活中,属性就表示固有特征,比如:一辆小轿车的属性有轮胎数、颜色、品牌等。
属性可以简单理解为与生俱来的特征,比如一个人的姓名、年龄、身高、体重等都是属性。
而属性
在Python面向对象
中,直接使用变量
来表示。
需要注意的是,一个对象通常包含两部分
:方法
、属性
。
3.2 类外面访问属性
在类外面访问属性,分为:
(1)添加属性
(2)获取属性
说明:要访问对象中的属性,需要使用.
来操作。
- 添加属性的语法:
对象名.属性名 = 值 - 获取属性语法:
对象名.属性名
例如,一起来完成:
(1)在车类外设置车的颜色为红色、有4个轮胎;
(2)获取属性值并输出结果。
python
class Car:
def run(self):
print("汽车能跑起来...")
# 1.创建对象
car = Car()
# 2.添加属性
car.color = "红色"
car.number = 4
# 3.获取属性
print(f"颜色:{car.color}")
print(f"轮胎数:{car.number}")
3.3 类内部获取属性
在类内部获取属性语法:
self.属性
例如,一起来完成:
(1)在类外部添加2个属性:车颜色、车品牌;
(2)在类内部定义一个show()方法来获取属性值信息。
python
class Car:
def run(self):
print("汽车能跑起来...")
# 定义方法
def show(self):
print(f"车颜色:{self.color}")
print(f"车的品牌:{self.brand}")
car = Car()
# 外部设定值
car.color = "黑色"
car.brand = "BWM"
# 内部获取值
# 调用方法
car.show()