python入门笔记——类和对象⑤(多态)
感觉这一节的理解还不是很完整,希望接下来的学习中能更加深入了解吧
# 多态:定义时的类型和运行时的类型不一样,此时就成为多态。即同一种行为对不同的子类或对象有不同的行为表现
# 要想实现多态,必须遵守两个前提:
# 1.继承:多态必须发生在父类与子类之间
# 2.重写:子类重写父类的方法
class Animal:
'''
父类
'''
def say_who(self):
print('我是动物')
pass
pass
class Duck(Animal):
'''
动物类的子类:鸭子类
'''
def say_who(self):# 重写
print('我是鸭子')
pass
class Dog(Animal):
'''
动物类的子类:狗类
'''
def say_who(self):
print('我是狗')
pass
pass
class Cat(Animal):
'''
动物类的子类:猫类
'''
def say_who(self):
print('我是猫')
pass
pass
# duck1 = Duck()
# duck1.say_who()
# # 如果Duck类中不写代码,那么会输出:我是动物,但鸭子不应该单单说自己是动物而应该说是鸭子,故而需重写父类的方法
# dog1 = Dog()
# dog1.say_who()
# cat1 = Cat()
# cat1.say_who()
def Animalcommon(obj):
'''
统一调用方法
:param obj:对象的实例
:return:
'''
obj.say_who()
pass
listObj = [Duck(),Dog(),Cat()]
for item in listObj:
Animalcommon(item)
pass
# 这样的代码是不是比之前的每个去print要好多了?如果要新增的话,仅需要在listObj里增加类名即可
# 事实上,python中的多态指的就是以上这些的综合体,可以说是个概念,就是同一种行为在不同子类中的不同行为表现
# 多态的用处大抵在于增加程序的灵活性与扩展性
输出结果:
我是鸭子
我是狗
我是猫