面向对象基础
面向对象和面向过程
编程思想
就是人们利用计算机来解决问题的思维.
分类
面向过程
它是一种编程思想, 强调的是以 步骤(过程) 为基础完成各种操作.
面向对象
参考思路: 概述, 思想特点, 举例, 总结
它是一种编程思想, 强调的是以 对象 为基础完成各种操作, 它是基于 面向过程的.
说到面向对象, 不得不提的就是它的三大思想特点:1. 更符合人们的思考习惯. 2. 把复杂的事情简单化. 3. 把人们(程序员)从执行者变成指挥者.
举例: 越符合当时的场景越好, 例如: 买电脑, 洗衣服…
总结: 万物接对象.
面向对象特征介绍
三大特征
- 封装
- 继承
- 多态
封装简介
概述
就是隐藏对象的属性和实现细节, 仅对外提供公共的访问方式.
举例
- 电脑, 手机, 函数, 类 = 属性 + 行为
好处
提高代码的安全性. (私有化)
提高代码的复用性. (函数)
继承
概述
子类继承父类的成员, 例如: 属性, 行为等.
大白话: 子承父业.好处
提高代码的复用性.
多态
概述
大白话: 同一个事物在不同时刻表现出来的不同状态, 形态.
专业版: 同1个函数, 接收不同的对象, 有不同的效果。
入门案例_汽车类
1 | """ |
self关键字介绍
案例1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46"""
self关键字:
概述:
代表本类当前【对象】的引用,谁(哪个对象)调用,self就代表谁
作用:
用于实现函数【区分不同对象】
总结:大白话
1:如果你是C1对象,那么self值,代表C1,如果C2调用的话,self值就代表C2
2:函数内部都一个self,哪个对象调用,我的self就代表谁
同学问问题:
张三的老师在给张三解决问题 李四的老师在给李四解决问题
总结: 在类内 和 类外方法的调用
1:在类内, 访问类中的行为(函数),通过self.的方式进行访问
2:在类外 ,访问类中的行为(函数),通过对象名.函数进行访问
"""
# 1、类的定义
class Car :
# 属性 和行为
def run(self):
print(f"{self}跑起来了")
def work(self):
print(f"我是work函数,我的self值是:",{self})
#我想在work里面调用run
# run() 在类内访问类中的函数(行为)必须使用self.方式
self.run() # = 本类当前对象的引用
# 2、类的调用
c1 = Car()
print(f"C1对象:", {c1}) # 0x000001BC70B8B640
c1.run() # 0x000001BC70B8B640
print("*"*10)
c1.work()
# 3.定义一个新的对象
print("-" * 24)
c2 = Car()
print(f"C2对象:", {c2}) # 0x000002B8B275B250
c2.run() # 0x000002B8B275B250
# 4.小结:c1和c2打印的值不同 ,因为他们是不同的对象。self代表的c1 和c2
# 当c1调用的时候self就代表c1 当c2调用的时候self就代表c2
入门案例_手机类
1 | """ |
类外_获取和设置对象的属性
1 | """ |
类内_获取对象的属性
1 | """ |
魔法方法之init方法
图解
案例1: 无参数版
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42"""
魔法方法:
Python内置函数,在满足特点的场景下,会被自动调用
场景魔法方法:
__init__ 在(每次)创建对象的时候,会自动触发该类__init__()函数
__str__
__del__
"""
# 给车这个对象默认设置color(颜色)和number(轮胎数)为黑色、3个轮胎。
#1.定义类
class Car:
# 函数 、方法、 行为
def __init__(self):
print("我是无参init魔法方法")
self.color='黑色'
self.number=3
def show(self):
print(f"颜色{self.color} , 轮胎数{self.number}")
# 演示:就是每创建一次对象,调用一次init方法
# 2.创建汽车类对象
c1 = Car()
# c1.__init__()
c1.show()
print("*" * 24)
c2 = Car()
#结论:在(每次)创建对象的时候,会自动触发该类__init__()函数
#演示初始化车参数 (颜色 轮胎)
# 调用
print(c1.color,c1.number)
#修改
c2.show()
print("*"*24)
c2.color='蓝色'
c2.number=4
print(c2.color,c2.number)
c2.show()案例2: 有参数版
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21"""
回顾:
__init__()魔法方法,在创建对象的时候,会被自动调用。一般用于给该类的属性做初始化
初始化:
有参数初始化:
"""
# 1、创建汽车类,并且初始化带参的方法。
class Car:
# 初始化带参数
def __init__(self, color, number):
self.color = color
self.number = number
def show(self):
print(f"颜色{self.color} 轮胎数:{self.number}")
# 2、实例化Car类的对象
c1 = Car() # __init__() missing 2 required positional arguments: 'color' and 'number'
# c1 = Car("黄色",4)
# 当带参数初始化方法出现的时候,即 在创建对象的时候。可以给对象予以初始化值,否则执行报错
# c1.show()
魔法方法之str方法
1 | """ |
魔法方法之del方法
1 | """ |
减肥案例
1 | # 例如小明同学当前体重是100kg。每当他跑步一次时, |
烤地瓜案例
1 | """ |
创建类的格式
1 | """ |
继承入门
1 | """ |
单继承演示
1 | # 一个摊煎饼的老师傅,在煎饼果子界摸爬滚打多年, |
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.