欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
  一、三大编程范式
 
  编程范式即编程的方法论,标识一种编程风格
 
  三大编程范式:
 
  1.面向过程编程
 
  2.函数式编程
 
  3.面向对象编程
 
  二、编程进化论
 
  1.编程最开始就是无组织无结构,从简单控制流中按步写指令
 
  2.从上述的指令中提取重复的代码块或逻辑,组织到一起(比方说,你定义了一个函数),便实现了代码重用,且代码由无结构走向了结构化,创建程序的过程变得更具逻辑性
 
  3.我们定义函数都是独立于函数外定义变量,然后作为参数传递给函数,这意味着:数据与动作是分离的
 
  4.如果我们把数据和动作内嵌到一个结构(函数或类)里面,那么我们就有了一个‘对象系统’(对象就是数据与函数整合到一起的产物)。
 
  三、面向对象设计与面向对象编程
 
  def定义函数是面向对象
 
  class定义类是面向对象
 
  1、面向对象设计
 
  面向对象设计(Object oriented design):将一类具体事物的数据和动作整合到一起,即面向对象设计
 
  示例1:
 
  什么是类?
 
  类:把一类事物的相同的特征和动作整合到一起就是类,类是一个抽象的概念。
 
  什么是对象?
 
  对象:就是基于类而创建的一个具体的事物(指具体存在的),也是特征和动作整合到一起。
 
  示例2:
 
  学校类:
 
  特征:name,addr,type
 
  动作:考试,招生,开除学生
 
  2、面向对象编程
 
  面向对象编程(object-oriented programming):用定义类+实例/对象的方式去实现面向对象的设计
 
  小结:
 
  在Python中,类和 OOP 都不是日常编程所必需的。尽管它从一开始设计就是面向对象的,并且结构上支持 OOP,但 Python 没有限定或要求你在你的应用中写 OOP 的代码。
 
  用面向对象语言写程序和一个程序的设计是面向对象的,两者就是两码事。
 
  四、类和对象
 
  1.什么叫类:类是一种数据结构,就好比一个模型,该模型用来表述一类事物(事物即数据和动作的结合体),用它来生产真实的物体(实例)。
 
  (铅笔是对象,人是对象,房子是对象,狗是对象,alex是对象,配齐是对象,元昊是对象)
 
  3.类与对象的关系:对象都是由类产生的,上帝造人,上帝首先有一个造人的模板,这个模板即人的类,然后上帝根据类的定义来生产一个个的人
 
  4.什么叫实例化:由类生产对象的过程叫实例化,类实例化的结果就是一个对象,或者叫做一个实例(实例=对象)
 
  五、类的相关知识
 
  1、初识类
 
  在python中声明函数与声明类很相似。
 
  声明函数
 
  声明类
 
  经典类与新式类
 
  示例:
 
  2、属性
 
  类是用来描述一类事物,类的对象指的是这一类事物中的一个个体
 
  是事物就要有属性,属性分为
 
  1:数据属性:就是变量
 
  2:函数属性:就是函数,在面向对象里通常称为方法
 
  注意:类和对象均用点来访问自己的属性
 
  类的属性
 
  理论:数据属性即变量,类的定义与函数又极其类似,其实可以用函数的作用域来理解类的属性调用。
 
  类的数据属性
 
  类的函数属性(又称为方法)
 
  查看类属性
 
  我们定义的类的属性到底存到哪里了?有两种方式查看
 
  dir(类名):查出的是一个名字列表
 
  类名。__dict__:查出的是一个字典,key为属性名,value为属性值
 
  执行结果:
 
  特殊的类属性
 
  六、对象相关知识
 
  对象是由类实例化而来,类实例化的结果称为一个实例或者称作一个对象
 
  1.1、实例化
 
  什么是实例化?
 
  由类生产对象的过程就叫实例化
 
  1.2、构造函数
 
  类是数据属性和函数属性的结合,描述的是一类事物
 
  这类事物的一个具体表现就是一个实例/对象,比方说中国人是一个类,而你就是这个类的一个实例
 
  你除了有中国人这个数据属性外,还应该有名字,年龄,性别等数据属性
 
  如何为实例定制数据属性,可以使用类的一个内置方法__init__()该方法,在类()实例化是会自动执行
 
  注意:在说实例化的时候说过,执行类()会自动返回一值,这个值就是实例,而类()会自动执行__init__,所以一定不要在该函数内定义返回值,会冲突。
 
  1.3、实例属性
 
  理论:
 
  1.实例只有数据属性(实例的函数属性严格来说是类的函数属性)
 
  2.del 实例/对象,只是回收了实例的数据属性,函数属性是属于类的,是不会回收。
 
  实例化的过程实际就是执行__init__的过程,这个函数内部只是为实例本身即self设定了一堆数据(变量),所以实例只有数据属性。
 
  那么我们想访问实例的函数属性(其实是类的函数属性),如何实现
 
  改进版本
 
  3、实例属性和查看实例属性的方法如下:
 
  同样是dir和内置__dict__两种方式
 
  原理图
 
  示例:
 
  执行结果:
 
  1.4、特殊实例属性
 
  __class__
 
  __dict__
 
  警告:类和对象虽然调用__dict__返回的是一个字典结构,但是千万不要直接修改该字典,会导致你的oop不稳定。
 
  1.5、类属性与对象(实例)属性
 
  1、类属性的增、删、改、查
 
  执行结果:
 
  2、实例属性的增、删、改、查
 
  执行结果:
 
  1.其实你会发现,实例化就是 类名(),然后返回的结果是一个对象,加上括号是不是跟函数运行很像,函数运行完了有返回值,是不是很像,没错,就是一样的。
 
  2.函数又作用域的概念,其实类也有作用域的概念,二者一样
 
  3.你可以把class当做最外层的函数,是一个作用域
 
  4.实例化会自动触发init函数的运行,最后返回一个值即实例,我们要找的实例属性就存放在init函数的局部作用域里
 
  5.类有类的属性字典,就是类的作用域,实例有实例的属性字典,即实例的作用域
 
  6.综上,一个点代表一层作用域,obj.x先从自己的作用域找,自己找不到去外层的类的字典中找,都找不到,就会报错
 
  7.在类中没有使用点的调用,代表调用全局变量。

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h61578.shtml