面向对象

面向对象

百度图解

对象的概念

这个对象和处对象的对象毫无关系,他是一个抽象的概念,一切都可以是对象

将数据与数据的功能放在一起,这个组合就叫做对象。

这个数据可以是数据类型,也可以是人

这个功能可以是这个数据的内置方法,也可以是这个人的技能

面向的概念

面向过程编程 面向对象编程
定义 流水线式编程,分步编写需要的功能,不为某个单独的对象编写功能。 定义好对象,为其编写功能,抽象概念一切皆是对象。
结构 自然的数据结构 封装、继承、多态的数据结构
优势 适用于简单系统,容易理解 适用于大型复杂系统,用于需要对应对象的编程有明显的优势
劣势 难以维护,后期增添功能 部分使用场景较为局限

类与对象

一个对象是一个单独的个体,他会或者是拥有某种能力。

一群拥有相同功能的对象,他就是这个类。

由于对象的抽象概念:类也是一种对象,一切皆是对象。

类与对象的创建

在代码编程中是先有类才能有对象的。

语法结构:
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()

今日小结

面向对象挺好理解的,只是这个概念初次接触会觉得有点抽象。

posted @ 2022-04-06 21:43  Eason辰  阅读(40)  评论(0)    收藏  举报