16.面向对象基础

面向对象基础

面向对象编程

面向过程编程(一种编程思想):类似于工厂的流水线,一步一步的完成每个工作.

  • 优点:逻辑简单明了
  • 缺点:可扩展性差,牵一发而动全身

面向对象编程也是一种思想,就好比是在创造一个世界,你就是这个世界的上帝,是一种上帝式的思维方式.

其中对象的概念: 就是特征和技能的结合体

面向对象编程: 定义出一个个鲜明独特的对象,然后通过对象之间的交互编程来解决问题.

  • 优点:可扩展性强
  • 缺点:编程的复杂程度要高于面向

名称空间

能产生名称空间的有:文件 | 函数 | 类
能产生名称空间的对象有__dict__这个值,通过该这个值访问到名字与地址的对应关系

def func():
    pass

func.__dict__['index'] = 10000
print(func.__dict__)
属性:
print(func.__dict__['index'])
print(func.index)

方法:
func.add = lambda n1, n2: n1 + n2
print(func.__dict__)
print(func.add(10, 20))

类与对象

类(类别):一系列具有相同特征和技能的对象

现实世界中先有对象,后有类.

python中先定义好类,才有实例化对象.

函数定义阶段,只检测语法,不执行代码(牢记)
类的定义阶段,会运行代码(牢记)

类拥有自己的名称空间,类的实例化对象也拥有自己的名称空间

对象定制独有的特征

通过实例化对象自己的名称空间可以给实例化对象定制独有的特征:

  1. 我们在类内部定义一个__init__方法,这个方法会在实例化对象时自动触发,会产生实例化对象的名称空间,并且可以给实例化对象初始化其特有的属性,__init__中第一个参数self就是实例化对象.
  2. 属性的访问顺序:实例化对象优先加载自身的属性与方法,如果没有再考虑类的,类中也没有则报错

类与对象的绑定方法

  1. 类中定义的函数是类的函数属性,类可以使用,相当于一个普通的函数而已,意味着需要完全遵循函数的参数规则,该传几个值就传几个
  2. 类中定义的函数是共享给所有对象的,对象也可以使用,而且是绑定给对象用的,绑定的效果:绑定给谁,就应该由谁来调用,谁来调用就会将谁当作第一个参数自动传入
  3. 类中定义的函数都应该自带一个参数self
  • 类名称空间中定义的数据属性和函数属性都是共享给所有对象用的
  • 对象名称空间中定义的只有数据属性,而且是对象所独有的数据属性

类与数据类型

lis = list([1,2,3])
lis2 = list([1,2,3])
lis.append(4)   # self自动传lis
list.append(lis,4)	# 手动传lis

对象的高度整合

​ 在类里面封装了一大堆特征/数据,然后又封装了一大堆方法(方法用来专门用来操控这些数据的),并且在这基础上对于不同对象,这些属性和方法会有不一样.

总结为:对象其实就是一个高度整合的产物,整合数据与专门操作该数据的方法.

原文地址:https://www.cnblogs.com/yellowcloud/p/11046057.html