类(面向对象、增删改查、继承、多态、封装、反射)

类的增删改查可以操作类里面的函数、数据属性,实例。

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 删除对象的变量

 



posted @ 2020-02-29 11:22  cuizero0  阅读(354)  评论(0编辑  收藏  举报