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

yipeiwu_com6年前Python基础

本文实例讲述了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编程中的异常处理教程

1、异常简介 从软件方面来说,错误是语法或是逻辑上的,当python检测到一个错误时,解释器就会指出当前流已经无法继续执行下去,这时候就出现了异常。异常分为两个阶段:首先是引起异常发生的...

python中闭包Closure函数作为返回值的方法示例

前言 首先看看闭包的概念:闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它...

Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例

Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例

本文实例讲述了Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式。分享给大家供大家参考,具体如下: demo.py(读取文件): # 1....

使用Windows批处理和WMI设置Python的环境变量方法

大概在Python2.7.xx以前,安装Python时环境变量是需要自己设的,所以自己做了一个批处理文件.bat来设置环境变量Path,通过WMI命令wmic来实现。 ::检查pat...

python实现从pdf文件中提取文本,并自动翻译的方法

python实现从pdf文件中提取文本,并自动翻译的方法

针对Python 3.5.2 测试 首先安装两个包: $ pip install googletrans $ pip install pdfminer3k googletrans会提供一...