多态模块ABC--day25

多态模块ABC
abstract class 是抽象类的缩写 抽象的意思是 不清晰 不具体 看不懂

多态是多个类的对象拥有相同的方法,但是我们没有从严格要求说必须提供这些方法,子类完全可以不提供这些方法
现在要做的就是 严格要求 子类必须实现父类声明的方法
# 多态中的基类 相当于(协议 标准 规范) 要求子类必须满足这些标准
#使用ABC模块来限制子类 的步骤
#1.为类中指定元类为abc.ABCMeta
#2.在相应的方法上加上abc.abstractmethod装饰器

class Animal(metaclass=abc.ABCMeta):

@abc.abstractmethod
def eat(self):
pass

@abc.abstractmethod
def drink(self):
pass


class Cat(Animal):
def eat(self):
print("猫爱吃鱼肉...")

def drink(self):
print("用舌头舔..")

class Dog(Animal):
def eat(self):
print("狗爱吃骨头...")
def drink(self):
print("用舌头舔..")

class Pig(Animal):
def eat(self):
print("猪 爱吃草...")

def drink(self):
print("用嘴吸的..")

p = Pig()
# p.eat()

c = Cat()
# c.eat()

# 多态的好处 完全不需要考虑得到的对象时声明类型 只要知道了其基类中的内容就能使用
def feeding(animal):
animal.eat()
animal.drink()

feeding(c)
feeding(p)
# 多态中的基类 相当于(协议 标准 规范) 要求子类必须满足这些标准

 

posted @ 2018-12-18 15:41  WenChen-0o0  阅读(118)  评论(0编辑  收藏  举报