python中继承 继承:是将基类中的属性(不包括私有属性)“遗传”给派生类,使得派生类中也拥有基类的属性。 基类:也可以叫父类,是被继承的类。 派生类:也可以叫子类,由它去继承父类,从而获取到父类的属性。 继承语法:class 子类名(父类名(可以有多个,用逗号隔开)): 好处:继承可以共用其他类中的一些属性。可以大大增强代码的复用性,减少代码量。也可以实现多态。 此时,Child就是子类,Father就是父类。 在python中是支持多继承的,就是一个子类可以继承多个父类。这样子类就同时拥有所有父类的属性。 对应于python的新式类而言,不管我们有没有手动继承某个类,python都会自动继承object这个类,这个是除它自己以外,所有类的父类。 对于python面向对象的三大特征:封装,继承,多态。 可能有人认为python中没有多态,可我认为python中处处都体现了多态,因为objec是所有类的父类,所有类在向上转型到object。 我们可以看到在Child类中我们并没有定义那些魔术方法,可是在类中具有这些方法,这些方法来自于object,所有类都继承object,则所有类也具有了object中的属性。 我们可以使用__mor__ 这个方法来获取到类的所有父类包括子类自己,及父类的继承顺序,关于类的继承顺序是使用了c3算法。 重写:对于子类继承了父类的各种属性,可是对于子类而言,并不是父类所有的属性都是与其一致,子类可能在同一个属性上有不同内容,此时,我们就要抛弃父类的某个属性,创造一个属于子类的属性。 当我们在子类中定义了与父类相同的属性时,就完成了重写,这个重写仅仅时对于子类而言的,对于父类并没有影响。 关于重写,如果我们在子类中创造一个与父类同名却对于参数不同的时候,会不会像在Java中一样呢,答案是:不一样。 这里就会报错,在python中只有同名的方法,并不会因为参数不同,而不会被重写。
|