• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

python 搞代码 4年前 (2022-01-09) 48次浏览 已收录 0个评论

本文实例讲述了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'  passclass D1(A,B,C):  passclass D2(B,A,C):  passclass D3(C,B,A):  passif(__name__=='__main__'):  print 'd1------->:'  d1=D1()  print 'd2----<mark>来源gaodaimacom搞#^代%!码网</mark>--->:'  d2=D2()  print 'd3------->:'  d3=D3()>>> d1------->:ad2------->:bd3------->: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):  passclass C2(A,B):  passclass 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------->:bd2------->:a

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python类继承与子类实例初始化用法分析
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址