面向对象及属性与方法

面向对象(oop)

就是把一类具有相同属性和动作的实体抽象成为计算机里面的类,也就是对象的模板(图纸),把属性和方法封装成一个类中。

处理业务的流程就是对象之间的信息传递, 把程序中的所有东西当做对象来进行处理。

什么是对象

对象是内存中存储指定数据的一块区域,实际上对象就是一个容器,专门用来存储数据。

对象的结构

由id(标识),type(类型),value(值)构成。
1.id(标识)。
id是用来标识对象的唯一性,每个对象都有唯一的id;id 是由解释器生成,就是对象的内存地址。
2.type(类型)。
type决定对象的功能,可以通过type()函数来查看对象类型。
3.value(值)。
value指的是对象中存储的具体数据,分为可变对象以及不可变对象;
可变对象:list,dict,set
不可变对象:int float str tuple bool

面向对象与面向过程的对比

面向过程:
面向过程将一个功能分解成一个一个小的步骤,这种编程方式往往只适用于一个功能,我们要实现别的功能的时候,往往需要编写新的代码,复用性比较低,但是比较符合人的思维,编写起来比较容易。
面向对象:
面向对象简单理解就是语言中所有的操作都是通过对象来进行的,面向对象是一种思考问题的方式,面向对象它是一种思想, 面向对象将实物变的简单化了,容易维护 ,方便复用 ,编写起来比较麻烦。

类的简介

类可以理解为对象的模板(图纸),在程序中我们可以依据类来创建对象(创建对象的对象!)

定义一个类

class 类名([父类]):
代码块
注意:类名是满足python合格命名规则的标识符,一般采用大驼峰的命名规范。如class My_Class (object):pass

类对象(类)与实例对象

类对象/类,是一个创建对象的对象,它的type类型是一个class type 类型。
先创建一个Person类(空类),并通过该类创建对象p1(类的实例):
面向对象及属性与方法
然后在内存中数据是以如下方式进行保存的(灵魂画手,只看内容,忽略细节,略…):
面向对象及属性与方法

类的属性与方法

类和对象都是对现实生活事物或程序内容的抽象,由两部分构成;
1.数据(属性)
2.行为(方法)
在类的代码中,可以定义变量和函数:
1.在类中的变量,将会成为所有实例的公共属性, 所有实例都可以访问这些变量。
2.在类中有何可以定义函数 类中的函数我们称之为方法,这些方法通过该类的实例都可以访问, 如果是函数 ,有几个形参传几个实参,如果是方法 默认传递一个参数 所以类中的方法至少要定义一个形参(self) 。
面向对象及属性与方法

属性和方法的查找

当我们去调用一个属性和方法的时候,解析器会先在当前的对象当中寻找是否有该属性或者方法,如果以后,则返回当前对象的属性值; 如果没有,则去当前对象中的类对象去寻找,如果有则返回类对象中的属性值,如果没有则报错。
如:
面向对象及属性与方法
然后在内存中数据是以如下方式进行保存的(灵魂画手,只看内容,忽略细节,略…):
面向对象及属性与方法
总结:
如果这个属性(方法)是所有类共享的,则应该保存到类对象当中;如果这个属性(方法)是某个实例独有的,则应该保存到实例对象当中 。