记录Python中继承中调用函数的用法
(1)在子类中使用父类的实例对象来调用方法
注意:
dog().eat("苹果") 中,dog()就是dog类的实例,eat("苹果")中的苹果就是直接传参。
(2)在子类中使用父类的类名来调用方法。(注意:一般不用这种方式)
注意点:
如果把self改成pig和dog其实也能够执行成功。
那么就有个问题:为什么改成pig和dog都可以成功呢?
我们可以看到这个方法(函数)本身是dog类的里面的,现在现在self改成dog,也就是dog类的实例对象去调用这个方法(函数)当然是可以的。
但是为什么self改成pig也是可以的,我们知道,现在使用的是继承,那么继承的特性就是可以用父类的方法(函数),self就算改成了pig,其实本质上还是dog。这就是继承的特性。我既然已经继承了父类的方法(函数),当然就可以填写pig了。
其实最好,我们也不用这么纠结,直接使用self,也不用这么繁琐的去理解。
(3)在子类中使用 self.方法名 来调用方法。(常用)
知识回顾:
那我们知道这种直接传参其实并不建议,我们建议的是形参,也就是标题说的间接传参 。
那这个函数就需要改造一下:
函数改造好之后,那么就可以用之前讲的三种方式来调用:
(1)使用 self.方法名 的方式来调用父类的方法(函数)------最常用
(2)使用父类的实例化对象(或者子类的实例化对象)来调用父类中的方法----基本上不会这么用
补充点:
在这里我所说的实例化对象其实正确的叫法叫做:实例化
dog1=dog()
dog()叫做实例化;dog1叫做实例化对象
(3)使用 类名.方法名 去调用父类的函数--------基本上不会这么用
注意:
这里的self不能改成pig或者dog,改了就会报错
如果硬是要用这个 类名.方法名 的方式来调函数,那么就要在父类函数中做修改:
记录:
虽然我们用了上面三种方式去调用函数,但是实际上我们想一个问题,既然都用了继承了,那么为什么还要用这种复杂的方式去调用了。我们直接使用 self.方法名 就行了。不要用那些奇奇怪怪的方法。统一一下思想。但是我们对上诉的其他方式调用也必须了解(因为你不知道后面有哪个大神写的代码就喜欢用些奇奇怪怪的方式,导致自己想半天也想不同。)