类(面向对象、增删改查、继承、多态、封装、反射)
类的增删改查可以操作类里面的函数、数据属性,实例。
1.函数与类的区别
函数实现功能的模块化
类是实现功能和数据的模块化
——init——类的构造:初始化类,实例化的时候自动执行
2.类用法
4.什么是类,
类是把一类事物的相同的特征和同一动作整合到一类,类是抽象的
5.什么是对象
对象就是基于类创建的一种事物,也是特征和动作整合到一起的
6.面向对象
就是__init__独特构造
7.类和对象的关系
对象都是类产生的。
8.实例化:有类产生的过程叫实例化
9.新式类类名后面括号里加object
10.什么是属性
类的对象里的每个事物都有属性,属性包括数据属性(变量),函数属性(面向对象的方法),实例只有数据属性,实例能访问类属性
11.查看类的属性:
dir(类名)
12.函数面向对象
13.类的面向对象
14.类的数据增删改查
print(school.conent)#查看 school.conent='英国'#改 print(school.conent) school.dang='中国' #增加 print(school.dang) print(q.dang) del school.dang #删除 print(school.dang)
15.类的函数属性的增删改
def eat_food(self,name): #增加函数 print('%s正在招生'%self.name,name) school.ss=eat_food print(q.ss('cui')) def strip(slef): #改函数 print('%s学校的运动很键康'%slef.name) school.ss=strip print(q.ss()) del strip #删除函数 print(q.ss())
16.类的实例的增删改
q.ade=12 #增加实例属性 print(q.ade) q.ade=10 #修改 print(q.ade) del q.ade #删除 print(q.ade)
17.静态属性
把函数属性变成数据属性
1.类方法@classmethod 函数名(cls) :可以访问函数属性和数据属性,不可以访问实例
2.静态方法@staticmethod 函数名():不能访问类的属性页不能访问函数属性
3.静态属性@property 函数名(self):既可以访问属性也可以访问类的
4.组合:类和类没有共同特点,只有关联用的组合
18.类的特点:继承、封装、多态
(1)继承:子类继承父类的所有属性,如果子类有的话就不会继承父类,分为单继承和多继承。
(2)什么时候永继承:当类与类之间有相同的功能,可以提取两个类共同的功能放上面做基类。
(3)继承的两种含义:第一种,继承积累的方法(减少代码重用)
第二种,接口继承,声明子类兼容基类,,就是父类规定好了方法,子类必须继承父类的方法,要用import abc
(4)继承顺序:从子类往左向上层继承,到最后一层结束,从子类向右上层继续执行。python3:新式类,python经典类
(5)在子类中调用父类方法
19.多态:是指了对象如何通过共同的属性和动作操作和访问。
python本身就是多态,多态就是运行是的绑定状态
多态是怎样来的?不同的方法调用相同的方法
20.封装:有两种
1.类就是本身就是麻袋
2.类中定制私有的,只能在类的内部使用,不能在外部使用
21.反射:指程序可以访问、检测和修改它本身状态或是一种行为的一种能力。
- getattr 获取指定字符串名称的对象属性
- setattr 为对象设置一个对象
- hasattr 判断对象是否有对应的对象(字符串)
- delattr 删除指定属性
class ace(object): def __init__(self,name,age): self.name=name self.age=age def dispaly(self): print(self.name) p=ace('cui',20) def abe(self): print(self.name) print(hasattr(p,"dispaly"))#判断是否有这个方法 print(hasattr(p,"name")) #判断是否有这变量 n=getattr(p,'name') print(n) #查取变量内存地址 print(getattr(p,'dispaly')) #查取函数的内存地址 #print(setattr(p,'dispaly',abe)) setattr(p,'dispaly',abe)#添加函数到对象中去 p.dispaly(p) #delattr 删除对象的变量