类的继承
在Python中,我们的习惯表述是:A类是B类的子类,而B类是A类的父类(或超类)。
所以,类的继承,让子类拥有了父类拥有的所有属性和方法。如此,不用从头写代,而是直接复用。
只有继承的话,子类只是父类的复制而已。那样,为什么不直接用父类,还要增加一个子类?
就需要了解另一个重要的概念:类的定制。
类的定制:
子类可以在继承的基础上进行个性化的定制,包括:(1)创建新属性、新方法;(2)修改继承到的属性或方法。
类的定制,不仅可以让子类拥有新的功能,还能让它有权修改继承到的代码;所以,当我们谈定制时,已经包含了继承。
类的定制的前提是继承,而定制的加入让类的继承不仅仅只是单纯的复制而已。这也是我们创建子类的意义;
继承的基础语法:
继承通过一个小括号,子类就能轻轻松松地拥有父类所拥有的一切。不用复制大段大段的代码,只要一个括号,就能复用整块代码。
很多类在创建时也不带括号,如class Chinese:。这意味着它们没有父类吗?
实际上,class Chinese:在运行时相当于class Chinese(object):。而object,是所有类的父类,我们将其称为根类(可理解为类的始祖)。
理解:1、所有父类及子类创建的实例都属于根类object; 2、所有子类创建的实例都属于父类; 3,父类创建的实例不属于子类。
函数isinstance():可以用来判断某个实例是否属于某个类。
具体用法是输入两个参数(第一个是实例,第二个是类或类组成的元组),输出是布尔值(True 或 False)
****理论上,父类可以被无限个子类所继承,这一点好比类的属性方法可以传递给无限个实例,
多层继承和多重继承:
多层继承,属于继承的深度拓展;语法和继承一样;
多重继承,则是继承的宽度拓展。
多重继承:一个类,可以同时继承多个类,语法为class A(B,C,D):
括号里B, C, D的顺序是有讲究的。和子类更相关的父类会放在更左侧。
就近原则:越靠近子类(即越靠左)的父类,越亲近,越优先考虑。子类调用属性和方法时,会先在靠左的父类里找,找不到才往右找。
多重继承和多层继承对比图:
多层与多重继承对比多层继承和多重继承的结合,让继承的类拥有更多的属性和方法,且能更灵活地调用。进而,继承的力量也得以放大了很多倍。
多重继承中,若某父类还有父类的话,会先继续往上找到顶。
类的定制语法:
我们可以在子类下新建属性或方法,让子类可以用上父类所没有的属性或方法。这种操作,属于定制中的一种:新增代码。
除了新增代码外,定制还有另一种操作:重写代码。
重写代码,是在子类中,对父类代码的修改。
子类继承父类方法的操作是在def语句后接父类.方法(参数)
网友评论