Python基础:面向对象-继承和多态
一、继承
Python面向对象的继承指的是多个类之间的所属关系,即子类默认继承父类的所有属性的方法。
作用:可以减少代码重复,提升代码复用率。
简单示例如下:
#父类A
class Animal(object):
s = 'aaa'
def __init__(self, name):
self.name = name
def eat(self, s):
print(f'吃{s}')
#子类B
class Cat(Animal):
pass
cat = Cat('加菲猫')
cat.eat('小鱼干')
在Python中,所有类默认继承object类,object类是顶级类或基类;其他子类叫做派生类。
子类重写父类的同名属性和方法:
class Dog(Animal): # 父类中虽然只定义了初始化的属性只有name,但是我自己要在这个属性的基础上进行扩展 def __init__(self,name,color): # 要先调用父类的初始化方法,便于继承父类的东西 super().__init__(name) self.color = color # 重写父类的eat方法 def eat(self,s,n): print(f'吃了{n}斤{s}') def sleep(self): print(f'{self.name}正在睡觉')
二、多态
简单地说,多态就是“具有多种形态”,它指的是:即便不知道一个变量所引用的对象到底是什么类型,仍然可以通过这个变量调用方法,在运行过程中根据变量所引用对象的类型,动态决定调用哪个对象中的方法。
简单示例:
class Animal(object): def eat(self): print('动物要吃东西') class Dog(Animal): def eat(self): print('狗喜欢吃骨头') class Person(object): def eat(self): print('人吃五谷杂粮') def fun(object): object.eat()
fun(Animal()) fun(Dog()) fun(Person()