面向对象周总结

面向对象周总结

人狗大战

面向对象核心思路

封装一个人的函数
封装一个狗的函数
让人才能调用人的函数内的数据和方法
让狗才能调用狗的函数内的数据和方法
就是想引出面向对象的核心思想:
数据与功能的绑定

编程思想

面向过程编程:按照固定的流程解决问题
eg:到ATM之前,我们都是面向过程编程 注册功能 登录功能
面向对象编程:对象即容器 数据与功能的结合体 就像游戏角色,我们只创建对象,对象结果怎么样看别人怎么用

面向对象类与对象

对象:数据与功能的结合体		对象才是核心
类:多个对象相同数据和功能的结合体		类主要是为了节省代码
程序中想要产生对象 必须先定义出类

类与对象的创建

1.类的语法结构
calss 类名:
    '''代码注释'''
    对象公共的数据
    对象公共的功能
    1.class是定义类的关键字
    2.类名的命名与变量名几乎一致 需要注意首字母推荐大写用于区分
    3.数据:变量名与数据值的绑定 功能(方法)其实就是函数
2.类的定义与调用
	类在定义阶段就是执行类体代码 s1 = 类名()产生对象

对象独有的数据

    # 对象公共的数据
    school_name = '清华大学'
    # 专门给学生添加独有数据的功能 变成__init__之后类产生对象的过程中自动触发

对象独有的功能

 # 对象公共的功能
    def choice_course(self):
        print(f'学生{self.name}正在选课')
# 1.直接在全局定义功能 该函数就不是学生对象独有的了
# 2.只能将函数放在类中 但是类中的函数又是对象公共的
'''定义在类中的功能 默认就是绑定给对象使用的 谁来调谁就是主人公'''

动静态方法

1.类中直接定义函数 默认绑定给对象 类调用几个参数传几个 对象调用第一个参数就是对象自身
2.@classmethod修饰的函数 默认绑定给类 类调用第一个参数就是类自身 对象也可以调用并且会自动产生该对象的类当做第一个参数传入
3.普通的函数 无论类还是对象调用 都必须自己手动传参

面向对象继承的概念

1.继承就是指子类可以使用父类里的所有数据和方法
3.继承的实操
	class Son(Father):
        pass
    1.在定义类的时候类名后面可以加括号填写其他类名 意味着继承其他类
    2.在python支持多继承 括号内填写多个类名彼此逗号隔开即可
    class Son(F1, F2, F3):
        pass

继承的本质

对象:数据和功能的结合体
类(子类):多个对象相同数据和功能的结合体
父类:类与父类的本质都是为了节省代码

继承的本质应该分为两部分
	抽象:将多个类相同的东西抽出去形成新的类
    继承:将多个类继承刚刚抽取出来的新的类

名字的查找顺序

1.单继承:先在对象名称空间内找,再去类里找
2.多继承:从左往右,如果遇到菱形就先广度优先,再找最后的那个;度过不是菱形,深度优先,一直找到底

经典类与新式类

经典类:不继承object或者其子类的类
新式类:继承object或者其子类的类
	在python2中有 经典类和新式类
	在python3中只有新式类(所有类默认都继承object)

派生方法

# 子类基于父类某个方法做了扩展
posted @ 2022-11-06 14:26  lsumin  阅读(20)  评论(0编辑  收藏  举报