面向对象三大特征: 封装,继承,多态

  封装:客观的事物封装成类

  继承: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、动态创建类,在创建类的过程中要自定义类属性和方法