Python 中,子类B继承父类A时候会用class B(A):的代码形式声明B。

class A:

def __init__(self, x=1, y=2):

self.x = x

self.y = y

print("In class A's init...")

def Aprint(self):

print("AAAAAAAAAAAAA")

在子类B的初始化方法默认会覆盖掉父类A的初始化方法,举例:

class B(A):

def __init__(self, z):

self.z = z

print("In class B's init...")

def Bprint(self):

print("BBBBBBBBBBBBB")

demo = B(3)

print(demo.z)

print(demo.x)

demo.Aprint()

demo.Bprint()

报错显示B中找不到成员x(肯定也找不到y成员):

注释掉demo.x这行就没问题:

说明子类只是重写了父类的__init__方法,其他方法(Aprint)得以继承。

现在在B的__init__方法中加入一行代码:super().__init__(x, y)或者super(B, self).__init__(x, y),并且接受新的变量x、y:

class B(A):

def __init__(self, z, x, y):

# super(B, self).__init__(x, y)

super().__init__(x, y)

self.z = z

print("In class B's init...")

def Bprint(self):

print("BBBBBBBBBBBBB")

现在调用全体的变量和方法试试看:

demo = B(3,4,10)

print(demo.z)

print(demo.x)

print(demo.y)

demo.Aprint()

demo.Bprint()

这说明子类B中初始化方法中添加一行super().__init__(x, y)代码会调用父类A中的初始化方法,而不会直接的覆盖父类初始化方法,同时注意传参。

进一步地,子类中任意位置添加super().func(*args)都会调用父类中的func()函数。

需要声明的一点是,python2中,必须使用super(B, self).func(*args)才能调用父类A中的func()函数;此外父类A也要继承自object:class A(object):,这在python3中是可以省略的。

修改后:

标签:__,初始化,python,demo,self,用法,init,print,父类

来源: https://www.cnblogs.com/Higgerw/p/14124198.html

python 继承并定制父类的初始化方法,python 继承类的初始化用法相关推荐

  1. 【面向对象编程】(4) 类的继承,重构父类中的方法

    各位同学好,今天和大家分享一下面向对象编程中,类的三大特征之继承.主要介绍:子类继承父类的基本方法:重写父类的类方法:重构父类的初始化方法:super() 方法.本节主要是单继承,多继承在下一节中介绍 ...

  2. C++中了类继承和调用父类的构造函数方法

    构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法).因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需 ...

  3. 在C++中子类继承和调用父类的构造函数方法

    构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法).因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需 ...

  4. 子类不能继承或覆盖父类的private方法

    题目:如果现在父类的一个方法定义成private访问权限,在子类中将此方法声明为default访问权限,那么这样还叫重写吗? 答:不是.因为private关键字的定义是"除了包含该成员的类之 ...

  5. 初始化方法-创建对象时自动调用初始化方法

    class Cat:def __init__(self):print("这是一个初始化方法")# self.属性名 = 属性的初始值self.name = "Tom&qu ...

  6. c++初始化成员列表_C++ 类构造函数初始化列表

    关注我们更多精彩等你发现! 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: 上面的例子中两个构造函数的结果是一样的.上面的构造函数 ...

  7. python排序sorted_sorted排序的两个方法 - Python

    在给列表排序时,sorted非常好用,语法如下: sorted(iterable[, cmp[,key[,reverse]]]) 简单列表排序,很容易完成,sorted(list)返回的对象就是列表结 ...

  8. python内置函数format的使用方法 python format函数怎么用

    1.基本语法 format 函数可以接受不限个参数,位置可以不按顺序. 如:"{1} {0} {1}".format("hello", "world& ...

  9. python 中类的初始化方法

    在 Python 的类中,有一种特殊的方法--初始化方法.它的格式是 def __init__(self):,方法名由 init(initialize 的缩写,初始化的意思)加左右两边的 双下划线 组 ...

最新文章

  1. 【TensorFlow】理解tf.nn.conv2d方法 ( 附代码详解注释 )
  2. MyEclipse优化---编程时更流畅
  3. 【博客话题】感谢您,我的老师
  4. python编写一个程序、实现文件的复制_写个python 脚本实现文件的递归拷贝
  5. MongoDB与Spring Data项目
  6. Html5 各属性详解
  7. 谈华为鸿蒙内核和操作系统,谈华为鸿蒙内核和操作系统
  8. 因为这几个TypeScript代码的坏习惯,同事被罚了500块
  9. NetBeans Weeldy News 刊号 # 53 - Apr 23, 2009
  10. 555 定时器的 3 种用法判断和解释
  11. php文字转语音amr,Android插件,TTS语音合成(文字转化语音)。
  12. 网站被攻击客户信息被泄露如何解决
  13. !!. 与 ?. 的区别
  14. Win10 1809美化
  15. 关于取整符号(二叉树具有n个结点的m次树的最小高度⌈logₘ(n(m-1)+1)⌉)
  16. 《缠中说禅108课》22:将 8 亿的大米装到 5 个庄家的肚里
  17. 关于标题党、八卦的最优解!!!
  18. 数据库 和html的交互
  19. HTML5+CSS3+ES5/6+TS+WebAPI前端入门/实习题库笔记
  20. 定向推送,虚假宣传,资本助力的团油有谁撑腰?

热门文章

  1. Extjs中控件分隔符
  2. 300多名中国人在菲律宾非法就业出事了?
  3. 什么是web标准、可用性、可访问性
  4. 工程流体力学笔记暂记25 (管内流动的流态与损失-雷诺数)
  5. ubuntu18.04 + CUDA10 + CUDNN7 deb安装
  6. P2P之UDP穿透NAT的原理与实现(附源代码)(转)
  7. [zz] 腾讯云 AV1落地
  8. php为什么不是三剑客,PHP 开源 CMS 三剑客论剑 SXSW 展会
  9. python seo百度_为SEO学习Python课程(python与seo百度云免费)
  10. [内核内存] [arm64] 内存规整1---memory-compaction详解