前言

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

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

父类A

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

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

class B(A):
 def getName(self):
  return 'B '+self.name
 
if __name__=='__main__':
 b=B('hello')
 print b.getName()

执行

$python lei2.py 
name: hello
B hello

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

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()

执行

$python lei2.py 
hi
B hello

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

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()

执行

$python lei2.py
name: hello
hi
B hello

总结

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

您可能感兴趣的文章:
  • python中子类与父类的关系基础知识点
  • python 子类调用父类的构造函数实例
  • Python实现子类调用父类的初始化实例
  • Python子类继承父类构造函数详解
  • Python 实现子类获取父类的类成员方法
  • python中子类调用父类函数的方法示例
  • Python实现子类调用父类的方法
  • python支持多继承吗
  • python继承threading.Thread实现有返回值的子类实例
  • Python多重继承之菱形继承的实例详解
  • python子类如何继承父类的实例变量

转载请注明出处:http://www.zhongtian365.com/article/20230519/41521.html

随机推荐

  1. 如何在Python中子对象的所有实例中持久化父配置对象?

    我是OOP python的新手,一直在这个问题上犯错,下面是我的类:class SFTP: ? Just a wrapper around pysftp module with extra functionality ? ...

  2. 在python中永久设置种子

    我已经阅读了几个问题,包括那些专门针对numpy的问题。然而,我只是对在random中永久设置seed感兴趣,因此在每次调用时使用random.random()生成相同的随机float。下面是我所做的:import random rando...

  3. python 多线程中子线程和主线程相互通信方法

    需求:主线程开启了多个线程去干活,每个线程需要完成的时间不同,但是在干完活以后都要通知给主线程 下面上代码: #!/usr/bin/python # coding:utf8 ''' 多线程和queue配合使用,实现子线程和主线程相互通...

  4. Python中子数据帧的Groupby和应用函数

    如何通过item和date进行分组,然后对于每个子数据帧,获得实际行,其中data‘值是子数据帧中的实际中间值?有时有多个行的data等于中间值,在这种情况下,我们只保留第一行。df: item date data ...

  5. Python实现解析Bit Torrent种子文件内容的方法

    本文实例讲述了Python实现解析BitTorrent种子文件内容的方法。分享给大家供大家参考,具体如下: 有很多种子文件,有时候记不清里面都是什么东西,又不想一个一个的拖放到迅雷或BT软件里头看, 上网查了一下Python的脚本,自己也...

  6. 如何在python中基于某个种子生成具有重复项的数字列表

    我不知道如何根据某个种子生成具有重复项的数字列表。我已经尝试使用下面的代码,但它不能生成有重复的数字random.seed(3340) test = random.sample(range(100), 100000)复制我认为这是可行的,但...

  7. 在python中设置程序范围内的随机种子

    我有一个相当大的程序,在这里我使用random模块中不同文件中的函数。我希望能够在一个位置设置一次随机种子,以使程序始终返回相同的结果。可以做到python吗?

  8. Python多重子正则表达式

    最初使用这样的工作脚本遍历文件夹中的csv文件并替换为一个子字符串:import fileinput import os import glob #### Directory and file mask this = rC:\work\P...

  9. 将随机种子绑定到python中类的实例

    假设我有一个TestClass()类,它的方法返回由random、numpy或scipy模块生成的随机数。假设TestClass()的两个实例t1和t2总是生成相同的随机数,在不修改TestClass()的内容的情况下,如何才能做到这一点呢...

  10. 关于初始种子自动选取的区域生长实例(python+opencv)

    算法中,初始种子可自动选择(通过不同的划分可以得到不同的种子,可按照自己需要改进算法),图分别为原图(自己画了两笔为了分割成不同区域)、灰度图直方图、初始种子图、区域生长结果图。 另外,不管时初始种子选择还是区域生长,阈值选择很重要。 ...