面向对象
面向对象
百度图解

对象的概念
这个对象和处对象的对象毫无关系,他是一个抽象的概念,一切都可以是对象
将数据与数据的功能放在一起,这个组合就叫做对象。
这个数据可以是数据类型,也可以是人
这个功能可以是这个数据的内置方法,也可以是这个人的技能

面向的概念
| 面向过程编程 | 面向对象编程 | |
|---|---|---|
| 定义 | 流水线式编程,分步编写需要的功能,不为某个单独的对象编写功能。 | 定义好对象,为其编写功能,抽象概念一切皆是对象。 |
| 结构 | 自然的数据结构 | 封装、继承、多态的数据结构 |
| 优势 | 适用于简单系统,容易理解 | 适用于大型复杂系统,用于需要对应对象的编程有明显的优势 |
| 劣势 | 难以维护,后期增添功能 | 部分使用场景较为局限 |
类与对象
一个对象是一个单独的个体,他会或者是拥有某种能力。
一群拥有相同功能的对象,他就是这个类。
由于对象的抽象概念:类也是一种对象,一切皆是对象。
类与对象的创建
在代码编程中是先有类才能有对象的。
语法结构:
class 类名:
类体代码
1.class是定义类的关键字
2.类名类似于函数名,首字母推荐大写(墨守成规)
3.类体代码就是存放对象公共数据和功能的地方
数据: 变量名 = 变量值
功能: 函数
因为其内部是一个字典数据类型,所以查看名称空间使用
print(类名.__dict__)
获取这个类的属性
print(类名.__dict__['属性'])
也有一个方便的方法,直接使用句点符
print(类名'属性')
如何产生对象:类名()
接收名 = 类名() 产生一个空的名称空间
类名.属性 = '他的功能或值,相当于对象'
如果重复对相同的属性产生对象
类名.属性 = '他的功能或值,相当于对象123'
那么就会改变这个属性的对应关系
对象的实列化
class 类名:
def __init__(对象名, 属性1, 属性2, 属性3):
'''该方法就一个功能>>>:给对象添加独有的数据'''
self.属性1 = 属性1的对象
self.属性2 = 属性2的对象
self.属性3 = 属性3的对象
类中的__init__方法会在类产生对象的时候自动执行
类产生对象的具体步骤
1.创建一个空的名称空间
2.将空的名称空间和括号类的数据一起由__init__执行
3.第一个参数就是本身属性的名称
4.其他参数将作为第一个参数属性的值
5.将创建好的对象自动返回
ps:针对括号内第一个形参self其实就是一个普通的变量名而已
只不过该变量名将来专门接收对象的 所以给它起了个固定的名字叫self
绑定方法
根据类产生对象的第三点
3.第一个参数就是本身属性的名称
对象来调用时,会自动将第一个参数与该对象就行绑定,调用时,使用该参数就行。
这就是类中所有函数的第一个函数都是self(自我)的意思。
猜拳小游戏(没有用到今天的知识,下次使者使用类写)

# 石头剪刀布
import random
choice = ['剪刀', '石头', '布']
def game():
ai_score = 0
score = 0
while ai_score < 3 and score < 3:
select = input(''''
1.剪刀
2.石头
3.布
''')
ai_select = random.choice(choice)
if select == '1':
select = '剪刀'
if select == '2':
select = '石头'
if select == '3':
select = '布'
print(r'玩家出', {select}, 'ai出', {ai_select})
if select == ai_select:
print('平局')
if select == '剪刀':
if ai_select == '石头':
print('ai胜利,加1分')
ai_score += 1
if ai_select == '布':
print('玩家获胜,加1分')
score += 1
if select == '石头':
if ai_select == '剪刀':
print('玩家胜利,加1分')
score += 1
if ai_select == '布':
print('ai获胜,加1分')
ai_score += 1
if select == '布':
if ai_select == '石头':
print('玩家胜利,加1分')
score += 1
if ai_select == '剪刀':
print('ai获胜,加1分')
ai_score += 1
print('''______比分板______''')
print('ai得分:', f'{ai_score}',
'玩家得分:', f'{score}')
if ai_score == 3:
print('❀❀❀ai获得本次游戏胜利❀❀❀')
if score == 3:
print('❀❀❀玩家获得本次游戏胜利❀❀❀')
game()
今日小结
面向对象挺好理解的,只是这个概念初次接触会觉得有点抽象。

浙公网安备 33010602011771号