Python子类继承父类构造函数详解

作者:laozhang 时间:2023-02-27 09:13:03 

如果在子类中需要父类的构造方法就需要显式地调用父类的构造方法,或者不重写父类的构造方法。

子类不重写 __init__,实例化子类时,会自动调用父类定义的 __init__。


class Father(object):
 def __init__(self, name):
   self.name=name
   print ( "name: %s" %( self.name) )
 def getName(self):
   return 'Father ' + self.name

class Son(Father):
 def getName(self):
   return 'Son '+self.name

if __name__=='__main__':
 son=Son('runoob')
 print ( son.getName() )

输出结果为:

name: runoob
Son runoob

如果重写了__init__ 时,实例化子类,就不会调用父类已经定义的 __init__,语法格式如下:


class Father(object):
 def __init__(self, name):
   self.name=name
   print ( "name: %s" %( self.name) )
 def getName(self):
   return 'Father ' + self.name

class Son(Father):
 def __init__(self, name):
   print ( "hi" )
   self.name = name
 def getName(self):
   return 'Son '+self.name

if __name__=='__main__':
 son=Son('runoob')
 print ( son.getName() )

输出结果为:

hi
Son runoob

如果重写了__init__ 时,要继承父类的构造方法,可以使用 super 关键字:


super(子类,self).__init__(参数1,参数2,....)

还有一种经典写法:


父类名称.__init__(self,参数1,参数2,...)

class Father(object):
 def __init__(self, name):
   self.name=name
   print ( "name: %s" %( self.name))
 def getName(self):
   return 'Father ' + self.name

class Son(Father):
 def __init__(self, name):
   super(Son, self).__init__(name)
   print ("hi")
   self.name = name
 def getName(self):
   return 'Son '+self.name

if __name__=='__main__':
 son=Son('runoob')
 print ( son.getName() )

输出结果为:

name: runoob
hi
Son runoob

标签:Python,子类继承父类
0
投稿

猜你喜欢

  • python框架Django实战商城项目之工程搭建过程图文详解

    2022-12-16 16:25:57
  • python实现定时发送邮件

    2022-12-20 07:49:49
  • Python多进程并发与多线程并发编程实例总结

    2023-06-28 02:16:15
  • tensorflow之并行读入数据详解

    2021-09-20 14:42:30
  • Pytorch之保存读取模型实例

    2023-04-03 02:15:11
  • Python偏函数Partial function使用方法实例详解

    2023-02-07 09:47:02
  • Django连接本地mysql数据库(pycharm)的步骤

    2024-01-20 05:05:39
  • 《设计网事》前言

    2009-07-15 17:19:00
  • 在kali上安装AWVS的图文教程

    2022-12-13 23:58:24
  • python实现修改固定模式的字符串内容操作示例

    2023-05-13 21:44:04
  • 基于javascript实现tab选项卡切换特效调试笔记

    2024-06-12 13:48:02
  • python实现简单反弹球游戏

    2021-05-06 23:25:45
  • 详解nodejs内置模块

    2024-05-03 15:54:20
  • SQL对冗余数据的删除重复记录只保留单条的说明

    2024-01-17 07:24:11
  • 简单了解python的break、continue、pass

    2022-06-01 01:20:10
  • MySQL创建全文索引分享

    2024-01-21 10:16:06
  • js调用设备摄像头的方法

    2024-04-17 09:46:46
  • 基于ASPJPEG 制作了一个梦寐已久的批量水印工具步骤

    2011-02-28 10:39:00
  • OpenCV图像处理GUI功能详解

    2021-01-26 15:55:34
  • 巧用weui.topTips验证数据的实例

    2023-08-12 03:00:51
  • asp之家 网络编程 m.aspxhome.com