day23总结

目录

总结

面向对象总复习:python

面向过程编程思想:
核心是过程,过程指的是作事情的步骤,即先干什么再干什么。
基于该编程思想编程,就比如一条流水线,一种机械式的思惟方式。linux

面向对象编程思想:
核心是对象,对象指的是特征与技能的结合体。
基于该编程思想编程,就比如创造世界,一种上帝式的思惟方式。面试

类:
类指的是一系列对象相同的特征与技能的结合体。编程

如何定义类:
先抽象,抽取对象之间相同的特征与技能。
再定义类。安全

定义类时会发生哪些事情:
1.会产生一个类的名称空间
2.会把类内部的全部名字,扔进该名称空间中
注意: 定义类时,就会执行类内部的代码,若语法不正确,则会报错。架构

如何产生对象:
调用类会产生一个对象,调用类的过程称之为类的实例化,对象称之为类的一个实例。函数

init: 调用类时触发该方法。测试

调用类时发生的事情:
1.调用类会产生一个对象的名称空间。
2.会触发__init__,接着把对象与括号内全部的参数都传给__init__(),对象看成第一个参数。
3.在__init__内部,能够给对象添加属性。大数据

对象的名字查找:
1.先找对象本身的
2.若对象没有,则去类中查找
3.类中没有,则会默认继承object类中查找架构设计

对象的绑定方法特殊之处:
类来调用,类内部的方法只是一个普通函数,函数须要几个参数就传几个。
对象的绑定方法,由对象来调用,会自动把对象看成第一个参数传给该方法。
注意: 不一样的对象调用对象的绑定方法,会绑定给不一样的对象。

一切皆对象:
在python中一切皆对象。

python八大数据类型皆为对象:
    n = 10  # n = int(10)
    list  tuple set dict float bool str
内置函数: filter

人狗大战:
人咬狗
狗又咬人
人狗互咬。

继承:
继承指的是新建类的方式,新建的类指的子类或派生类,
子类能够继承一个父类,父类又能够称之为基类或超类。

如何查找继承关系:
必须遵循“先抽象,再继承”

抽象:
抽取类似的部分。

  • 先抽象
    抽取类与类之间相同的特征与技能。
  • 再继承
    确认好子类与父类
    定义父类,父类中写类与类之间相同的特征与技能。
    子类继承父类的属性

class Father:
pass

class Sub(Father):
pass

*******继承关系:
类是对象与对象之间的关系,类是一系列对象相同的特征与技能的结合体。
继承是类与类之间的关系,子类与父类是一种从属关系。

派生:
派生指的子类继承父类的属性,并派生出本身的属性。

子类能够派生本身的属性,并重用父类的属性
1.直接调用类,类名.属性的方式重用父类的属性。
2.super(),super().指向的父类的名称空间,重用父类的属性。
注意: 子类派生出与父类相同的属性,以子类的为主。

在继承背景下,对象属性的查找顺序
1.先从对象的名称空间中查找
2.去类的名称空间中查找
3.去父类的名称空间中查找
4.去object里面查找,若没有则报错。

新式类与经典类:
继承object的类,都称之为新式类。
在python2中,没有继承object的类,都称之为经典类。

钻石继承(菱形继承):

新式类:
    广度优先

经典类:
    深度优先

组合:
组合指的是一个对象的属性,是另外一个对象。

组合的做用,与继承同样,都是解决代码冗余问题。

继承的优势:
    编写的复杂程度没有组合高。

继承的缺点:
    耦合度过高,可扩展性差。

组合的优势:
    可让类与类之间解耦合, 可扩展性高。

组合的缺点:
    编写的复杂程度高于继承。

封装:
封装指的是把一堆属性,封装到对象中,对象就比如一个袋子,或一个容器。
优势:
方便数据的存取。
能够经过“对象.属性”的方式获取/取数据与方法。

封装是面向对象的核心。

访问限制机制:
在类内部,凡是以__开头的属性,都会被隐藏,实际是变形--> _类名__属性

好处:
    能够对一些重要的数据进行隐藏,不轻易被直接调用,保证数据的安全。
    好比与金钱、用户信息相关的操做。

property:
让看起来像动词的方法,变成以名词的方式调用。
方法名 不须要加括号调用。

多态:
同一种事物的多种形态。
水: 液态水、固态水、气态水

多态的目的:
    为了统一代码编写的规范。

多态的实现方式:
    继承:
        子类继承父类的特征与技能。

    抽象类:
        1.导入一个abc模块
        2.让父类继承一个ABCMeta
        3.给类内部全部的方法加上abc.abstractmethod装饰器
        子类继承抽象类,强制让子类继承父类的方法,缺一不可。

    鸭子类型:
        只要长得像鸭子,而且叫声、行为与鸭子一摸同样,那么就是鸭子。
        同一种事物的类,都有相同的功能,该这些类都在内部定义相同名称的方法。

classmethod:
是一个装饰器,用来装饰在类内部的方法,可让该方法变成类的绑定方法。
对象绑定方法:
由对象来调用,会把对象看成第一个参数传给该方法。

类的绑定方法:
    由类来调用,会把类看成第一个参数传给该方法。

staticmethod:
是一个装饰器,用来装饰在类内部的方法,可让该方法变成非绑定方法。

非绑定方法特殊之处:
    由谁来调用都是一个普通函数。

面向对象高级:
- isinstance:
判断对象是不是类的一个实例。

- issubclass:
    判断一个类是不是另外一个类的子类。

- 反射: 经过字符串操做对象或类的属性。

    hasattr: 判断字符串是不是一个对象或类的属性。
    getattr: 经过字符串获取一个对象或类的属性,若没有默认是None。
        getattr('对象或类', '字符串属性名', '自定义的默认值')

    setattr: 经过字符串设置一个对象或类的属性。
        setattr('对象或类', '字符串属性名', '属性的值')

    delattr: 经过字符串删除一个对象或类的属性。
        delattr('对象或类', '删除的字符串属性名')

- 魔法方法(类的内置方法):
    - __init__: 在调用类时触发,在__new__没有返回一个空对象时不会触发。

    - __new__: 在__init__执行前触发,必需要返回一个空对象。
        - object.__new__(cls)  # cls --> 当前类

    - __str__: 在打印对象时触发。

    - __getattr__: 会在 对象.属性,属性没有时触发。
        在类内部有__getattribute__,就不会执行__getattr__。
    - __getattribute__: 会在 对象.属性,无论属性有没有都会触发。

    *******面试题:__getattr__与__getattribute__的区别。

    - __setattr__: 会在 对象.属性=属性值 时触发。

    - __del__: 会在对象被销毁前触发。

    - __call__: 会调用对象时执行。

    - __delattr__: 会在对象删除属性时触发。

单例模式:
单例指的是,调用一个类时实例化获得多个对象时,对象指向同一个对象名称空间。

- @classmethod
- __new__

选课系统:
1.需求分析

2.程序的架构设计

3.分任务开发

4.测试

5.上线运营

需求:

  1. 建立北京、上海 2 所学校 --> 建立学校
  2. 建立linux , python , go 3个课程 , linux\py在北京开,go在上海开 --> 建立课程
  3. 管理员建立学校 ,老师,课程
  4. 学校包含学校名称,地址等属性
  5. 学生注册登陆后,能够选择学校,选择课程,查当作绩
  6. 学生只能选择一所学校,从校区中选择一门课程,课程绑定给学生。
  7. 老师登陆后,能够查看教授课程,选择想要教授的课程,查看课程下的学生,修改学生成绩等

用户能够操做的界面:
1.管理员
注册
登陆

建立学校
        - 学校名称
        - 学校地址

    建立老师
        - 用户名
        - 密码

    建立课程
        - 选择校区
        - 课程名称 课程绑定给校区

2.学生
    注册
    登陆
    选择学校
        - 一个学生只能选择一个学校

    选择课程
        - 一个学生能够选择多门课程

    查当作绩
        - 学生能够查找本身的成绩

3.老师
    登陆
    查看教授课程
    选择教授课程
    查看课程学生
    修改学生成绩
相关文章
相关标签/搜索