1.关于python核心课程主要有哪些,其中带星号的是重要知识点
2.Python是一门特别彻底的面向对象编程(OOP)的语言,面向过程:在解决问题的时候,关注的是解决问题的每一个的过程(步骤),面向对象:在解决问题的时候,关注的是解决问题所需要的对象, 面向对象本身是对面向过程的封装.
3.类:某一个具体对象特征的抽象,根据抽象的类,生产具体的对象,即对象可以抽像出具体的类,类可以实例化出成对象
类的组成:名称,属性,方法
python中类分为两种:经典类和新式类
4.属性和变量的区别:变量是“可以改变的量值”,属性是“属于某个对象的特性”,变量:根据不同的位置,存在不同的访问权限,全局和局部,属性:只能通过对象来进行访问。判定属性和变量的依据就是是否存在宿主,如果宿主是对象/实例,则称为对象/实例属性,如果宿主是类,则称为类属性
5.再类属性中,只有查是可以通过对象或者类来进行操作的,增删改只能通过类本身来进行操作
6.一般情况下,属性存储在__dict__的字典当中,有些内置对象没有这个__dict__属性,一般对象可以直接修改__dict__属性,但类对象的__dict__为只读;默认无法修改,可以通过setattr方法修改
7.如何让一个类中所有对象拥有相同的属性,即对象不可以随意更换自己的属性,在类中定义了什么属性之后该类的对象就只能用这个属性,在类中使用__slots__ = [属性]即可
8.方法和函数的区别,调用方式不同,函数调用时直接打括号即可,但是方法调用时需要用到对象.方法()才可以
9.由于万物皆对象,所以其实类也可以称为一个对象,对象也可称为对象,为了方便区分,类还是叫类,而对象则叫做实例,因为对象是由类进行实例化出来的
10.方法的划分:实例方法(默认第一个参数需要接收到一个实例),类方法(默认第一个参数需要接收到一个类,前面有一个@classmethod),静态方法(静静的看着前面俩装逼,第一个参数啥也不默认接收,前面有一个staticmethod),不管是哪种类型的方法都是存储在类对象里面,而且内存也是存储在类的字典里面
三种方法的正确调用和划分依据
11.元类:创建类对象的类,type是所有的元类
12.创建类也可以通过使用元类来创建类,两种方法创建类,如下图所示:
13.一个类寻找元类的顺序首先是看有没有自己定义元类(用的是__metaclass__),如果没有,则去找有没有继承哪一个类,如果还没有则去找模块级别看看有没有元类,最后没有才会是系统内置的type元类
14.生成文档
15.跨模块访问:import形式导入和from 模块 import * 形式导入
16. @property:主要作用就是, 可以以使用属性的方式, 来使用这个方法
17.类分为经典类和新式类:经典类没有继承(object),新式类继承(object)
18.由于私有属性还是可以用过_类名__属性来进行访问,还是不太安全,所以要想只读属性,应该如下图来操作
19.内置特殊方法:索引操作
20.关于将小于等于放一块使用如果系统自动的拆分成两个小于或者是等于,通过引用一个functools,
@functools.total_ordering
21.一个迭代器肯定可以通过next()函数来访问,但是可以通过next()函数来访问的不一定是迭代器,方法的遍历对象不太熟,需要多加了解
22.描述器:一个类里面有一个属性,这个属性指向特殊的方法,只要这个对象里面实现了三个实例方法,分别是__set__(),__get__(),__delete__(),在定义描述器之后,往后一般通过实例来进行操作,而不是通过类来进行操作,当有两个对象调用时,应该使用Person类而不是Age类,不然修改值的时候另外一个值也会被修改,instance代表的是Person类而self则代表的是Age类
23. 类修饰器的写法
24.面向对象的三大特性:封装,继承,多态
封装:将一些属性和相关方法封装在一个对象中
继承:一个类"拥有"另外一个类的"资源"的方式之一,继承分为单继承和多继承
多态:一个类, 所延伸的多种形态,在继承的前提下; 使用不同的子类, 调用父类的同一个方法, 产生不同的功能 ,调用时的多种形态
25.继承中被调用顺序有三种方法可以查看,在python3中用的是c3算法来确定继承中被调用的顺序
c3算法
26.抽象类和抽象方法