转载:

http://www.jb51.net/article/100195.htm

前言

使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的 初始化 。

注意:这个名称的开始和结尾都是双下划线。

父类A

1
2
3
4
5
6
class A(object):
 def __init__(self, name):
  self.name=name
  print "name:", self.name
 def getName(self):
  return 'A ' + self.name

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

1
2
3
4
5
6
7
class B(A):
 def getName(self):
  return 'B '+self.name
  
if __name__=='__main__':
 b=B('hello')
 print b.getName()

执行

1
2
3
$python lei2.py
name: hello
B hello

但重写了__init__时,实例化子类,就不会调用父类已经定义的__init__

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class A(object):
 def __init__(self, name):
  self.name=name
  print "name:", self.name
 def getName(self):
  return 'A ' + self.name
 
class B(A):
 def __init__(self, name):
  print "hi"
  self.name = name
 def getName(self):
  return 'B '+self.name
 
if __name__=='__main__':
 b=B('hello')
 print b.getName()

执行

1
2
3
$python lei2.py
hi
B hello

为了能使用或扩展父类的行为,最好显示调用父类的__init__方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class A(object):
 def __init__(self, name):
  self.name=name
  print "name:", self.name
 def getName(self):
  return 'A ' + self.name
 
class B(A):
 def __init__(self, name):
  super(B, self).__init__(name)
  print "hi"
  self.name = name
 def getName(self):
  return 'B '+self.name
 
if __name__=='__main__':
 b=B('hello')
 print b.getName()

执行

1
2
3
4
$python lei2.py
name: hello
hi
B hello

总结

以上就是关于python子类继承父类的__init__方法的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

最新文章

  1. CSS中使用text-transform实现首字母大写
  2. Redis学习笔记4-Redis配置详解
  3. Java Socket编程
  4. 如何将GridViewEX升级到UWP(Universal Windows Platform)平台
  5. 5分钟实现VS2010整合NUnit进行单元测试
  6. ubuntu sublime-text package control
  7. SQL SERVER NVARCHAR字段INSERT 中文乱码问题解决
  8. oracle 零散知识汇集
  9. COCI2014-2015CONTEST#7——POLICE
  10. Jdk1.6 JUC源码解析(6)-locks-AbstractQueuedSynchronizer
  11. 21.C++- "++"操作符重载、隐式转换之explicit关键字、类的类型转换函数
  12. 关于项目中ajax 操作 原生项目遇到的问题
  13. yii2查询汇总
  14. wine和cygwin安装使用教程
  15. <Linux> SSH配置之后 SHH slave1 测试 error:SSH: command not found
  16. 20135202闫佳歆--week3 构造一个简单的Linux系统MenuOs--学习笔记
  17. python 排序 sorted 如果第一个条件 相同 则按第二个条件排序
  18. gitlab数据迁移
  19. Android中openmax实现框架
  20. (转) MVC身份验证及权限管理-1

热门文章

  1. error: call of overloaded ‘sqrt(double&)’ is ambiguous
  2. windows命令整理
  3. 在idea中把springboot项目打成jar包遇到的问题(没有主清单属性)
  4. python学习笔记(十六)python操作redis数据库
  5. XMLUtil
  6. ueditor编辑器中从word中复制带图片的信息的操作演示
  7. sublime px转rem插件
  8. 笨办法学Python(learn python the hard way)--练习程序31-35
  9. MyView.java 自己画的view
  10. jsc2019_qualE Card Collector