python类的继承实例详解

发布时间 - 2026-01-11 00:27:00    点击率:

python 类的继承

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

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

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

例子:

class animal():
 name="hh"
 sex="man"
 def __init__(self):
  self.height=10
  self.weight=50
 def deception(self):
  print "ansible.height:"+self.height+" animal.weight:"+self.weight
 def run(self):
  print "animal is running...."
class dog(animal):
 def __init__(self):
  pass
if __name__=="__main__":
 dg=dog()
 print dg.__dict__

此时运行的结果为

{}

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

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

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

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

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

class animal():
 name="hh"
 sex=""
 def __init__(self):
  self.height=10
  self.weight=50
 def deception(self):
  print "ansible.height:"+self.height+" animal.weight:"+self.weight
 def run(self):
  print "animal is running...."
class dog(animal):
 def __init__(self):
  pass
 def run(self):
  print "dog is running..."
class jinmao(dog):
 # def __init__(self):
 #  self.ji="jinmao"
 pass
if __name__=="__main__":
 dg=jinmao()
 print dg.__dict__

此时的结果一样是

{}

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

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

总结:如果想了解python虚拟机具体是怎么创建类的(具体到当加载一个.pyc文件时,是怎么通过c语言的代码逻辑来把类对象放到一块内存中的,我也在了解这方面的内容,希望咱们一块探索)

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# python  # 类的继承  # 类的继承详解  # 类的继承介绍  # Python3里的super()和__class__使用介绍  # Python3.5面向对象程序设计之类的继承和多态详解  # 基于python3 类的属性、方法、封装、继承实例讲解  # 深入理解Python中的super()方法  # python类中super()和__init__()的区别  # python3中类的继承以及self和super的区别详解  # 类中  # 子类  # 第一个  # 是怎么  # 中会  # 是一个  # 就会  # 也在  # 更大  # 有一定  # 以此类推  # 我认为  # 只会  # 希望能  # 第二个  # 如果没有  # 想了  # 是说  # 中也  # 只是一个 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Java垃圾回收器的方法和原理总结  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  如何确保西部建站助手FTP传输的安全性?  bootstrap日历插件datetimepicker使用方法  活动邀请函制作网站有哪些,活动邀请函文案?  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  在Oracle关闭情况下如何修改spfile的参数  Bootstrap整体框架之JavaScript插件架构  b2c电商网站制作流程,b2c水平综合的电商平台?  详解MySQL数据库的安装与密码配置  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  如何快速搭建高效可靠的建站解决方案?  如何在腾讯云免费申请建站?  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  JS去除重复并统计数量的实现方法  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  如何用免费手机建站系统零基础打造专业网站?  简历在线制作网站免费版,如何创建个人简历?  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  油猴 教程,油猴搜脚本为什么会网页无法显示?  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  详解jQuery中基本的动画方法  如何快速生成高效建站系统源代码?  Laravel distinct去重查询_Laravel Eloquent去重方法  如何在七牛云存储上搭建网站并设置自定义域名?  详解Android中Activity的四大启动模式实验简述  javascript中闭包概念与用法深入理解  SQL查询语句优化的实用方法总结  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  如何快速搭建高效简练网站?  Android Socket接口实现即时通讯实例代码  黑客如何通过漏洞一步步攻陷网站服务器?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  如何快速搭建高效香港服务器网站?  Swift中switch语句区间和元组模式匹配  JavaScript模板引擎Template.js使用详解  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  如何续费美橙建站之星域名及服务?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  nodejs redis 发布订阅机制封装实现方法及实例代码  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  制作企业网站建设方案,怎样建设一个公司网站?  如何用5美元大硬盘VPS安全高效搭建个人网站?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  详解CentOS6.5 安装 MySQL5.1.71的方法