python类继承与子类实例初始化用法分析


Posted in Python onApril 17, 2015

本文实例讲述了python类继承与子类实例初始化用法。分享给大家供大家参考。具体分析如下:

[ 先贴参考书籍原文(中文英文对照)]
__init__方法介绍:
If a base class has an __init__() method the derived class's __init__() method must explicitly call it to ensure proper initialization of the base class part of the instance; for example: "BaseClass.__init__(self, [args...])"
As a special contraint on constructors, no value may be returned; doing so will cause a TypeError to be raised at runtime.

如果其基类也具有__init__(), 必须显式地在__init__()调用它, 以保证能够适当地初始化它的基类部分;例如: "BaseClass.__init__(self, [args...])"作为构造器的特殊情况, 它没有值被返回, 如果返回某个值, 会在运行时抛出异常TypeError.

1.子类定义了__init__方法时若未显示调用基类__init__方法,python不会帮你调用,解释运行都Ok

class A():
  def __init__(self):
    print 'a'
class B(A):
  def __init__(self):
    print 'b'
if __name__=='__main__':
  b=B()
>>> 
b

2.子类未定义__init__方法时,python会自动帮你调用首个基类的__init__方法,注意是首个。即:子类继承自多个基类时,只有第一个基类的__init__方法会被调用到:

class A:
  def __init__(self):
    print 'a'
class B:
  def __init__(self):
    print 'b'
class C(B):
  def __init__(self):
    print 'c'
  pass
class D1(A,B,C):
  pass
class D2(B,A,C):
  pass
class D3(C,B,A):
  pass
if(__name__=='__main__'):
  print 'd1------->:'
  d1=D1()
  print 'd2------->:'
  d2=D2()
  print 'd3------->:'
  d3=D3()
>>> 
d1------->:
a
d2------->:
b
d3------->:
c

3)基类未定义__init__方法时,若此时子类显示调用基类__init__方法时,python向上超找基类的基类的__init__方法并调用,实质同2

class A:
  def __init__(self):
    print 'a'
class B:
  def __init__(self):
    print 'b'
class C1(B,A):
  pass
class C2(A,B):
  pass
class D1(C1):
  def __init__(self):
    C1.__init__(self)
class D2(C2):
  def __init__(self):
    C2.__init__(self)
if(__name__=='__main__'):
  print 'd1------->:'
  d1=D1()
  print 'd2------->:'
  d2=D2()
>>> 
d1------->:
b
d2------->:
a

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python常用内置函数总结
Feb 08 Python
Python创建xml的方法
Mar 10 Python
Python实现telnet服务器的方法
Jul 10 Python
Python中Class类用法实例分析
Nov 12 Python
使用Python内置的模块与函数进行不同进制的数的转换
Mar 12 Python
python使用opencv进行人脸识别
Apr 07 Python
基于ID3决策树算法的实现(Python版)
May 31 Python
Python设计模式之装饰模式实例详解
Jan 21 Python
在python中使用nohup命令说明
Apr 16 Python
如何以Winsows Service方式运行JupyterLab
Aug 30 Python
Pycharm连接gitlab实现过程图解
Sep 01 Python
在python中对于bool布尔值的取反操作
Dec 11 Python
python中split方法用法分析
Apr 17 #Python
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 #Python
python字典get()方法用法分析
Apr 17 #Python
详解Python中__str__和__repr__方法的区别
Apr 17 #Python
使用Python设置tmpfs来加速项目的教程
Apr 17 #Python
在Python上基于Markov链生成伪随机文本的教程
Apr 17 #Python
基于scrapy实现的简单蜘蛛采集程序
Apr 17 #Python
You might like
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
2010/05/04 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
JavaScript实现复制或剪切内容到剪贴板功能的方法
2016/05/23 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
那些精彩的JavaScript代码片段
2017/01/12 Javascript
JS实现向iframe中表单传值的方法
2017/03/24 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
js实现带搜索功能的下拉框
2020/01/11 Javascript
用Python的线程来解决生产者消费问题的示例
2015/04/02 Python
Python的Flask框架中实现简单的登录功能的教程
2015/04/20 Python
python+matplotlib实现礼盒柱状图实例代码
2018/01/16 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
在python中创建指定大小的多维数组方式
2019/11/28 Python
Python彻底删除文件夹及其子文件方式
2019/12/23 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
html5/css3响应式页面开发总结
2018/10/16 HTML / CSS
建筑工程管理专业自荐信范文
2013/12/28 职场文书
建筑班组长岗位职责
2014/01/02 职场文书
社区领导班子四风问题原因分析及整改措施
2014/09/28 职场文书
2015年中学图书馆工作总结
2015/07/22 职场文书
apache基于端口创建虚拟主机的示例
2021/04/24 Servers
python实现简易自习室座位预约系统
2021/06/30 Python
正则表达式基础与常用验证表达式
2022/06/16 Javascript
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS