多态
什么是多态
指的是同一类/种事物的不同形态(其实就是继承关系的表现)
为何要用多态
多态性:在多态的背景下,可以在不用考虑对象具体类型的前提下而直接使用对象
多态性的精髓:统一
这就好比开奥迪车,宝马车和奇瑞qq,开的都是车,学开车不是学开某一辆车。
父类定义了,以后子类需要使用父类的功能,直接使用.语法就行(写个例子)
class animal():
def sound(self):
print('1111')
def run(self):
print('run fast')
class mouse(animal):
def sound(self):
print('5555')
obj=mouse()
obj.run()
原理还是子类找不到就到父类中去找
导入abc模块,能够让子类强制执行父类的功能
import abc
class animal(metaclass=abc.abcmeta):
@abc.abstractmethod (强制子类有speak这个功能)
def speak(self):
pass
父类是用来建立规范的,不能用来实例化,更无须实现内部方法:animal()
import abc
class animal(metaclass=abc.abcmeta):
@abc.abstractmethod
def sound(self):
print('1111')
def run(self):
print('run fast')
class mouse(animal):
def sound(self):
print('5555')
res=mouse()
print(res.sound())
扩展(linux有一个统一思想----一切皆文件)
python崇尚鸭子类型
class duck():
def walk(self):
print('i walk like a duck')
def swim(self):
print('i swim like a duck')
class person():
def walk(self):
print('this one walk like a duck')
def swim(self):
print('this man swim like a duck')
例子二:
class disk:
def read(self):
print('disk read')
def write(self):
print('disk write')
class memory:
def read(self):
print('mem read')
def write(self):
print('mem write')
class cpu:
def read(self):
print('cpu read')
def write(self):
print('cpu write')
obj1=disk()
obj2=memory()
obj3=cpu()
obj1.read()
obj2.read()
obj3.read()
这只是一种格式规范,用来统一代码的格式
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
网友评论