作用: 扩展已经存在的代码模块(类)
目的:代码的重(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方法,下面放出第二种方法
同样实现了效果,但是这里要注意直接调用父类时函数括号后面要加一个self参数,毕竟你调用他的时候要往里面传入实例对象
下面我会写我对多继承的理解,由于篇幅较长,我放在第二部分详细介绍:
转载请注明出处
python自学技术互助扣扣群:670402334