当前位置:Gxlcms > Python > 类的继承代码详解(python)

类的继承代码详解(python)

时间:2021-07-01 10:21:17 帮助过:16人阅读

这篇文章主要介绍了python类的继承实例详解的相关资料,需要的朋友可以参考下

python 类的继承

对于许多文章讲解python类的继承,大多数都是说一些什么oop,多态等概念,我认为这样可能对有一定基础的开发者帮助不是那么大,不如直接用在各种情况下所写的代码,来展示对于某一种代码情况,代码运行会有什么效果。这样可能对开发者的帮助更大。不说废话,直接上代码。

这里不区分经典类和新式类,下面分析的对新式类和经典类都适用

对于类中的init函数,只是一个初始化是调用的一个函数(ps:初始化和创建实例并不是一个过程,实例的创建是通过一个create函数来完成的),如果在子类中没有显示的声明init函数,则子类就会调用父类的init函数,但是不会再调用父类的父类中的init函数,如果显示的声明了init 函数,则在子类的初始化的时候就不会调用父类的初始化函数,只会调用子类中声明的init函数, 同时在子类实例中也不会有父类init函数中声明的属性,

例子:

  1. class animal():
  2. name="hh"
  3. sex="man"
  4. def init(self):
  5. self.height=10
  6. self.weight=50
  7. def deception(self):
  8. print "ansible.height:"+self.height+" animal.weight:"+self.weight
  9. def run(self):
  10. print "animal is running...."
  11. class dog(animal):
  12. def init(self):
  13. pass
  14. if name=="main":
  15. dg=dog()
  16. print dg.dict

此时运行的结果为

{}

当把dog类修改为如下时(ps:此时没有显示的声明init方法):

  1. class dog(animal):
  2. def run(self):
  3. print "dog is running..."

此时由于直接调用的父类animal的init方法,结果如下:

  1. {'weight': 50, 'height': 10}

如果此时有一个类继承dog类,此时会出现什么情况呢?(python解释器先在子类中寻找init方法,如果没有找到,再从父类中找,直到找到为止,并运行,并且不再运行父类的父类的init方法,此时没有运行的init方法中的创建的属性是没有的,例如上面的例子,第一次运行时得到的例子中并没有weight和height属性)

  1. class animal():
  2. name="hh"
  3. sex=""
  4. def init(self):
  5. self.height=10
  6. self.weight=50
  7. def deception(self):
  8. print "ansible.height:"+self.height+" animal.weight:"+self.weight
  9. def run(self):
  10. print "animal is running...."
  11. class dog(animal):
  12. def init(self):
  13. pass
  14. def run(self):
  15. print "dog is running..."
  16. class jinmao(dog):
  17. # def init(self):
  18. # self.ji="jinmao"
  19. pass
  20. if name=="main":
  21. dg=jinmao()
  22. print dg.dict

此时的结果一样是

{}

在类的多继承中会产生什么状况呢?(在多继承中会运行类的继承参数中的第一个参数声明的父类中的init函数,如果父类中没有init函数,继续寻找父类的父类中有没有,以此类推。。。如果找到了头还是没有,则换为第二个参数声明的父类,过程如第一个参数,知道找到init函数为止,如果都没有找到,则不初始化),代码可以根据前面例子自己测试。

对于在子类中调用父类中的方法的super的使用与特性。

总结:

以上就是类的继承代码详解(python)的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行