首先定义一个类,叫Fruit
class Fruit(object):
def label(self):
print('Fruit is delicious...')
当我们进一步定义Apple,Orange,Banana等类的时候就可以从Fruit这个基类(Base Class)处继承这个label方法,
class Apple(Fruit):
pass
class Orange(Fruit):
pass
class Banana(Fruit):
pass
apple=Apple()
orange=Orange()
banana=Banana()
apple.label()
orange.label()
banana.label()
运行结果:
C:\Users\asus\AppData\Local\Programs\Python\Python37\python.exe C:/Users/asus/PycharmProjects/爬虫/zrx.py
Fruit is delicious...
Fruit is delicious...
Fruit is delicious...
Process finished with exit code 0
继承的好处在于子类(subclass)可以获得基类的所有功能,即函数,当然子类也可以重新定义来覆盖掉继承来的方法
class Apple(Fruit):
def label(self):
print("Apple is delicious...")
apple=Apple()
apple.label()
运行结果:
C:\Users\asus\AppData\Local\Programs\Python\Python37\python.exe C:/Users/asus/PycharmProjects/爬虫/zrx.py
Apple is delicious...
Process finished with exit code 0
多态:
一种接口,多种实现,实现代码重用,接口重用;
编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体现,把一系列具体事物的共同点抽象出来, 再通过这个抽象的事物, 与不同的具体事物进行对话。
peo=People()
dog=Dog()
pig=Pig()
#peo、dog、pig都是动物,只要是动物肯定有talk方法
#于是我们可以不用考虑它们三者的具体是什么类型,而直接使用
peo.talk()
dog.talk()
pig.talk()
#更进一步,我们可以定义一个统一的接口来使用
def func(obj):
obj.talk()
在上面继承中,当我们定义一个class的时候,我们实际上就定义了一种数据类型,也可以说是把具体事物apple,orange,banana的共同点抽象出来为fruit,定义了"Fruit"这种数据类型;既然是根据共同点抽象出来的,肯定有共同的特点,比如所有水果douk都可以用好吃这个词来形容,所以可以定义一个label()函数