面向对象编程
第三部分 多态
#多态是指同一个方法或操作符在不同的对象实例上可以有不同的行为。这意味着可以通过一个共同的接口或基类引用不同的子类对象,并根据实际的对象类型调用不同的方法。
class Father(object):
def cure(self):
print(“使用中医的方法治病救人!”)
class Son(Father):
def cure(self):
print(“使用西医的方法治病救人!”)
class Shouyi:
def cure(self):
print(“使用兽医的方法治病救人”)
class Teacher:
def teach(self):
print(“数学特技教师”)
def cure(self):
print("根据自己的生活经验,治病救人")
class Patient(object):
# def need_docter(self,docter):
# if isinstance(docter,Father):
# docter.cure()
# else:
# print(f"治病的方法不合适,请到正规医院进行治疗")
def need_docter(self,docter):
if issubclass(docter.class,Father):
docter.cure()
else:
print(f"治病的方法不合适,请到正规医院进行治疗")
if name == ‘main’:
father = Father()
son = Son()
shouyi = Shouyi()
teacher = Teacher()
patient = Patient()
patient.need_docter(father)
patient.need_docter(son)
patient.need_docter(shouyi)
patient.need_docter(teacher)
运行结果:
#作业要求
#设计一个简单的动物园系统,其中包含不同类型的动物(如狗、猫和鸟)。每个动物都有自己的属性(如名字、年龄)和行为(如发出声音)。使用封装、继承和多态来完成。
class Animal(object):
def init(self,name,age):
self.name = name
self.age = age
def animal_call(self):
print(‘小动物会叫:’)
class Cat(Animal):
def init(self,name,age):
super().init(name,age)
def animal_call(self):
super().animal_call()
print("喵喵喵!")
class Dog(Animal):
def init(self, name, age):
super().init(name, age)
def animal_call(self):
super().animal_call()
print("汪汪汪!")
class Bird(Animal):
def init(self, name, age):
super().init(name, age)
def animal_call(self):
super().animal_call()
print("叽叽喳喳!")
class Zoo(object):
def quak(self,animal):
if issubclass(animal.class,Animal):
animal.animal_call()
else:
print(f"非动物,不能叫!!!")
if name == “main”:
cat = Cat(‘小猫’,3)
dog = Dog(‘旺财’,5)
bird = Bird(‘黄鹂’,1)
zoo = Zoo()
zoo.quak(cat)
zoo.quak(dog)
zoo.quak(bird)