面向过程指的一切以事物的流程为核心,清楚列出解决问题的步骤。
面向对象指的是要完成某些事物,不用自己去做,交给能够完成这个任务的功能模块(对象)去完成
类的创建
定义类
class Cat #定义类名
color = ‘red’ 类的公共属性(数据属性)
def eat(self,name): #定义方法
self.name = name 属性(是调用就是谁的)
print(‘the cat is eating’)
BlueCat = Cat( )#创建一个猫(对象)名叫蓝猫,同样的方式可以创建多个猫
创建对象
Cat() #对类进行调用就是创建对象,(创建时使用了一个新的内存,这个内存将来在保存属性,创建时里面就包含了方法)
一般讲创建的对象赋值给某个变量(就是对象的引用指向一个变量)
类与对象的关系 :相当于设计图纸(类)与通过设计图纸制造出来的实体的东西(对象)
# 类中的代码在类定义阶段便会执行,自动产生的命名空间用来存放类的变量名与函数名,可以通过 类名.__dict__ 查看,以字典的形式存放数据属性和函数属性 # 对象.方法 中的点是访问属性的语法,类中定义的名字,都是类的属性,在python 有两种属性,数据属性和函数属性,数据属性是共享, # ,函数属性是绑定给对象用的(eg: User.remove() >>>> 这个就是静态的数据类型绑定,
# print(DBUtil.__dict__)
# 打印如下:{'__module__': '__main__', 'gg': '我的天', # '__init__': <function DBUtil.__init__ at 0x000000E1AB272AE8>, # 'test_connect': <function DBUtil.test_connect at 0x000000E1AB272E18>, # 'connect': <function DBUtil.connect at 0x000000E1AB272A60>, # '__dict__': <attribute '__dict__' of 'DBUtil' objects>,} #程序中类的用法 # .:专门用来访问属性,本质操作的就是__dict__ #DBUtil.gg = '我的天' 基本相当于字典操作中的DBUtil.__dict__['gg'] = '我的天' # del DBUtil.gg等于经典类的操作DBUtil.__dict__.pop('gg') # # class DBUtil:#对方法进行封装,将同一类的所有功能封装在一个类中, #例如将某个数据库的所有操作 定义为一个类 # # gg = '我的天' # 数据属性,这个属性是共享的,无论是谁在调用这个属性,内存id 都是一样的 # def __init__(self, ip, username, password):# __init 下面可以有任何的代码但是不能有返回值 # # 这里就是封装,self里面就是一个对象的引用,对属性进行封装,方面类中的各个方法进行调用 # self.ip = ip # self.username = username # self.password = password # # # 对功能的封装 # def test_connect(self):# 函数属性 # 谁调用的是这个方法,这个self就是谁 # pass # # def connect(self): # pass # # class SQLDBUtil(DBUtil): #这里是单继承,在创建的子类的时候在括号内填入父类的名称就可以,如果是 # # 多继承的话,可以在括号内填入多个父类的类的名称,按照就近的原则,在子类继承的时候,最先查找的是()括号内的第一个父类 # 如果第一个没有的话,才会继续查找第二个参数的父类,一次类推eg: class son(father1,father2,father3) 从左往右查找 # # def add(self): # pass # # def upd(self): # pass # # print(DBUtil.__dict__) # User = DBUtil('192.168.1.1','pzw','Abc') # 无论是查找方法还是属性,都是先从自己的命名空间开始查找,如果找不到的话,才会向上级的命名空间去查找 # 在创建对象的一瞬间就会系统自动调用__ew__这个构造方法,创建在内存中开辟一个空间,创建一个空对象,之后触发__init_,将创建该对象的引用以实参的方式传递给__init__方法中的self,
__init__对对象进行初始化,
#执行完初始化的方法之后,执行赋值的操作, #将创建对象后的引用赋值给相关的变量