Python3.x:面向对象的三大特性之继承第一部分

作用: 扩展已经存在的代码模块(类)

目的:代码的重(chong)用

继承,是面向对象编程的特性之一,通过继承,子类(也叫做派生类)可以拥有和使用父类(也叫做基类)的方法和函数

class Father(object):
    def study(self):
        print('father study')


class Son(Father):
    def talk(self):
        print('son talk')

    def walk(self):
        print('son walk')


man1 = Son()
man1.study()  # father study

这里定义了两个类,一个类Father,一个类Son,Father类中有一个方法study,Son类中也有两个方法,通过

class Son(Father):

使类Son继承了类Father,然后使用类Son实例化生成了一个对象man1

man1 = Son()

这时我们使用man1调用study函数man1.study(),发现成功了,父类Father中的函数study成功执行了,至此,我们成功的使类Son继承了类Father

接下来我们深入讨论下类的继承:

首先可能会有人问能不能选择性继承,我觉得这样问不对,就好比儿子和爸爸每天生活在一起,你学习他看在眼里,你抽烟他也看在眼里,继不继承,只取决于他自己,他用了,就相当于继承了,他不用,就相当于不继承,所以说选择性继承的问题,就取决于你用不用,你用了,就继承了,你不用,就没有继承

还有一种情况就是你想用这个方法,但是不想用父类的方法,这种情况就自己在子类中写一个这个方法,这个时候再调用就会只调用子类
的这个方法了:

class Father(object):
    def study(self):
        print('father study')

    def smoking(self):
        print('father smoking')


class Son(Father):
    def talk(self):
        print('son talk')

    def walk(self):
        print('son walk')

    def smoking(self):
        print('son smoking')


man1 = Son()
man1.smoking()  # son smoking

接着会有人提出进阶问题:如果我父类和子类的这个函数都想执行呢?
这个时候就用到了super()方法,super()方法后面跟两个参数,一个是子类,一个是self,即传入子类名称和self(即实例化产生的对象,具体理解self请戳self参数是什么鬼?)就可以找到他的父类,通过

super(son_class_name, self).xx() # 伪代码,理解为主下面会放示例代码

就可以调用父类的xx函数,下面放出示例代码

class Father(object):

    def smoking(self):
        print('father smoking')


class Son(Father):

    def smoking(self):
        super(Son, self).smoking()
        print('son smoking')


man1 = Son()
man1.smoking()  # father smoking son smoking

这样就实现了同时执行子类和父类的同名函数了,执行顺序即代码行顺序

还有一种方法即直接调用父类,效果跟super效果一样,但是相比起来还是推荐使用super方法,下面放出第二种方法


Python3.x:面向对象的三大特性之继承第一部分_第1张图片

同样实现了效果,但是这里要注意直接调用父类时函数括号后面要加一个self参数,毕竟你调用他的时候要往里面传入实例对象

下面我会写我对多继承的理解,由于篇幅较长,我放在第二部分详细介绍:

面向对象的三大特性之继承第二部分

转载请注明出处

python自学技术互助扣扣群:670402334

你可能感兴趣的:(Python3.x:面向对象的三大特性之继承第一部分)