面向对象三大特征: 封装,继承,多态
封装:客观的事物封装成类
继承:python中一个雷可以继承一个类也可以继承多个类
多态:一类书屋有多种形态,一个抽象类有多个子类;不同的子类对象 调用相同的方法,产生不同的执行结果
多态实现的步骤:
1、定义一个父类,实现某个方法
2、定义多个子类,在子类中重写父类的方法,每个子类run方法实现不同的功能
3、假设定义了一个函数,需要一个父类的对象的参数,那么调用函数的时候,传入父类不同的子类对象,那么这个函数就会执行不同的功能,这就是多态的体现
class Animal(object): """动物类""" def func(self): print('动物发出了声音') class Cat(Animal): """猫类""" def func(self): print('喵 喵 喵') class Dog(Animal): """狗类""" def func(self): print('汪 汪 汪 ') def work01(ani: Animal): ani.func() work01(Dog())
元类
python中所有的类的类型都是type;type就是元类:创建类的类叫做元类
type动态的创建类:
参数1 name:类名(字符串类型)
参数2 bases:继承的父类(元组类型)
参数3 dict:类的属性和方法 (字典类型)
test=type('test',(object,),{"name":"zhangsan","func":lambda x:x*2}) print(test.name) #zhangsan print(test.func(1)) #2
什么时候需要用到元类?
1、动态创建类,在创建类的过程中要自定义类属性和方法