继承Inhertiance
人类和猫类都继承自动物类
个体继承自父母,继承了父母的一部分特征,但也可以有自己的个性
在面向对象的世界中,从父类继承,就可以直接拥有父类的属性和方法
这样可以减少代码,多复用。子类也可以定义自己的属性和方法。
class Animal:
def shout(self):
print('animal shout')
a = Animal()
a.shout()
class Cat:
def shout(self):
print('Cat shout')
c = Cat()
c.shout()
上面这两个类,虽然有关系,但是定义时并没有建立这种关系,而是各自完成定义
动物和猫类都有吃,但是它们的吃有区别,所以分别定义
class Animal:
def __init__(self, name):
self._name = name
def shout(self): # 一个通用的吃方法
print('{} shout'.format(self.__class__.__name__))
@property
def name(self):
return self._name
a = Animal('monster')
a.shout()
class Cat(Animal):
pass
c = Cat('tom')
c.shout()
out:
Animal shout
Cat shout
可以看出,通过继承,猫类可以不用写代码,直接继承父类的属性和方法
Animal就是Cat类的父类,也称为基类,超类
子类,也称为派生类
格式如下:
class 子类名(基类1[,基类2,……]):
语句块
如果类定义时,没有基类列表,等同于继承自object。
PY3中,object类是所有对象的根基类
class A:
pass
#等价于:
class A(object):
pass
python支持多继承,继承也可以多级
查看继承的特殊属性和方法有:
__base__ 类的基类
__bases__ 类的基类元组
__mro__ 显示方法查找顺序,基类的元组
mro() 同上 # int.mro()
__subclasses__() 类的子类列表 # int.__subclasses__()