资源简介 (共25张PPT)多态课前回顾1、导入单个类通过将一个类移到一个模块中,并导入该模块,依然可以使用其所有功能,整个主程序文件变得整洁、易于阅读。2、储存多个类虽然在同一个模块中的类之间,应存在某种相关性,但我们可根据需要,在一个模块中存储任意多个数量的类。3、导入多个类①从一个模块中导入多个类时,用逗号分隔了各个类。②导入整个模块再使用句点方式:module_name.class_name(模块名称.类名称),访问需要的类并创建了实例对象。情境引入上课了,老师说:“请每位同学回到自己的座位上坐好,那么此刻小吉同学就会找自己的座位坐好,小码同学也会找自己的座位坐好。虽然老师说的都是“自己的座位”,但“自己”却表示的是不同的个人,“座位”对于每个人来说都是“我的座位”,而不是他人的座位,这就是生活中的多态性!循序善诱类编程中就是:虽然都是同一个变量(“自己”)调用同一个的方法(“座位”),但该方法属于哪个类的对象(如“小吉同学”对象),完全是由程序在执行时(上课前执行到“找座位”环节)确定的(小吉找到他自己的座位,而不是其他人的座位),这就是类编程中的多态性!循序善诱本节课我们将在前面课程的基础上,探索什么是python编程中的多态?新知教授2、多态性1、多态3、课堂总结多态新知教授多态指的是一类事物有多种形态,(一个类有多个子类,因而多态的概念依赖于继承)新知教授多态在程序中指同一个方法调用,由于对象不同可能会产生不同的行为。多态是方法的多态,属性没有多态。思维构建一个类它继承了一个类,但是它又改写了它父类的方法,这样在调用这个方法时,就会因为实例对象的不同而调用的方法不同,也就是说看这个实例对象实例化时是用父类实例化的,还是子类实例化的,是父类实例化的,结果就是父类的方法,是子类实例化的,结果就是子类的方法。编玩边学class Animal:def __init__(self, name, age):self.name = nameself.age = agedef print_age(self):print("%s's age is %s" % (self.name, self.age))定义一个动物父类,我们都知道,自然界的动物种类有很多,有人、小鸟、小狗等等。编玩边学class Man(Animal):def print_age(self):print("%s's age is %s" %(self.name, self.age))class Dog(Animal):def print_age(self):print("%s's age is %s" %(self.name, self.age))我们创建两个子类,人与小狗,分别继承了父类中的属性与方法。编玩边学def animal_age(animal):animal.print_age()animal = Animal("nature",1000000000 )man = Man("jima", 33)dog = Dog("旺财", 2)animal_age(animal)animal_age(man)animal_age(dog)以上代码中函数 animal_age 函数的输入参数为类 Animal 的实例,但是在实际执行过程中 Animal 的子类 Man 和 Dog 的示例同样可以在 animal_age 函数中正常运行,这即是类的多态的作用。思维构建在 python 中多态的经典使用可以用两句话来总结:对扩展开放和对修改封闭,即著名的「开闭」原则。对扩展开放即可以随意的增加父类的子类;对修改封闭即对于依赖父类的函数,新增子类对该函数无任何影响无需做任何修改多态性新知教授多态性是编程中同一个操作因作用实例不同而表现出不同实现方式的特性。思维构建一般是这样表述多态性:向不同的对象发送同一条消息(调用函数),不同的对象在接收时会产生不同的行为(实现)。思维构建每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。编玩边学定义了四个类,分别是Animal类、People类、Dog类和Pig类,其中People类、Dog类和Pig类都继承了Animal类。这就体现了同一类事物的多种形态。class Animal:def talk(self):print("Animal is talking")class People(Animal):def talk(self):print("hello")class Dog(Animal):def talk(self):print("wang")class Pig(Animal):def talk(self):print("heng")编玩边学def Func(obj):obj.talk()people = People()dog = Dog()pig = Pig()Func(people)Func(dog)Func(pig)这四个类都有一个talk()方法。试着调用talk()方法。调用Func()函数为同一个操作,但调用的参数是不同的,即调用了不同的实例作为参数。思维构建由运行结果可知,有不同的类创建不同的实例,以不同的实例作为参数时,调用talk()得到的打印结果是不同的,这是因为每个实例具有不同的实现方式,这就是多态性的体现。实践创作完成本节课的程序,感受多态给程序编写带来的便利。①多态性增加了程序的灵活性,以不变应万变,无论实例千变万化,使用者都是以同一种形式去调用。②多态性还增加了程序可扩展性,通过继承创建新的类,子类可以使用父类的方法,也可以使用自己重写的方法。课堂总结1、多态多态指的是一类事物有多种形态,(一个类有多个子类,因而多态的概念依赖于继承)2、多态性多态性是编程中同一个操作因作用实例不同而表现出不同实现方式的特性。分享交流同学们今天写代码有没有遇到什么问题?演示今天打印的代码同学们,要加油哦!下节课见啦 展开更多...... 收起↑ 资源预览