专栏首页大数据那些事python面向对象(2)—— 继承(2)

python面向对象(2)—— 继承(2)

在上一节中,我们重写了父类的方法,但是如果我们还想用这两个父类的方法,可按如下例子进行重写:

class Gun1(object):
	def __init__(self):
		self.length = 100
		
	def shoot(self):
		print('bang1')
		
class Gun2(object):
	def __init__(self):
		self.length = 200
		
	def shoot(self):
		print('bang2')
		
class Wuzi(Gun1,Gun2):
	def shoot(self):
		# 注意这里要先初始化自己,这样可以避免调用父类方法后再调用自己的方法时,还是父类的方法输出
		self.__init__()
		print('bang3')
		
	def shoot1(self):
		# 调用父类方法时先初始化父类
		Gun1.__init__(self)
		Gun1.shoot(self)
	
	def shoot2(self):
		# 同上
		Gun2.__init__(self)
		Gun2.shoot(self)

wuzi = Wuzi()

wuzi.shoot()
wuzi.shoot1()
wuzi.shoot2()

此时输出为bang3,bang1,bang2

多层继承

class Gun1(object):
	def __init__(self):
		self.length = 100
		
	def shoot(self):
		print('bang1')
		
class Gun2(object):
	def __init__(self):
		self.length = 200
		
	def shoot(self):
		print('bang2')
		
class Wuzi(Gun1,Gun2):
	def shoot(self):
		# 注意这里要先初始化自己,这样可以避免调用父类方法后再调用自己的方法时,还是父类的方法输出
		self.__init__()
		print('bang3')
		
	def shoot1(self):
		# 调用父类方法时先初始化父类
		Gun1.__init__(self)
		Gun1.shoot(self)
	
	def shoot2(self):
		# 同上
		Gun2.__init__(self)
		Gun2.shoot(self)

class XiaoWuzi(Wuzi):
	pass

wuzi = XiaoWuzi()

wuzi.shoot()
wuzi.shoot1()
wuzi.shoot2()

像XiaoWuzi这种继承了Wuzi(又继承自两个父类)这样的形式称为多层继承,它照样可以用最高父类(Gun1、Gun2)的方法

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python面向对象(2)—— 继承(1)

    如上例所示,Gun称为父类,Wuzi为子类,Wuzi继承Gun,自动继承父类属性及方法,此时Wuzi后面的括号内只写了一个父类,称之为单继承

    gzq大数据
  • sparkstreaming(2)——updatestatebykey

    在前面的例子中,每次输入的单词在被记录以后,就会被删除,如果我们要保持之前的数据,随着相同字母的输入,能够实现累计更新呢? 我们就需要用到updatestat...

    gzq大数据
  • 防火墙(5)——五表

    (1)五表 在iptables中不指定table默认filter表。 其实一共有五种表,分别为filter nat mangle security raw表...

    gzq大数据
  • 《Python基础教程》 读书笔记 第九章 魔法方法、属性和迭代器 (上)

    在Python中创建一个构造方法很容易。只要把init方法的名字从简单的init修改为魔法版本__init__即可:

    统计学家
  • python爬虫入门(七)Scrapy框架之Spider类

     Spider类 Spider类定义了如何爬取某个(或某些)网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。 ...

    zhang_derek
  • python3的构造方法

     2.在一个类中,只能有一个__init__构造方法起作用(有多个的时候,最后一个起作用)

    py3study
  • python十道经典面试题,测试你的python功底!

    1.init 通常用于初始化一个新实例,控制这个初始化的过程,比如添加一些属性, 做一些额外的操作,发生在类实例被创建完以后。它是实例级别的方法。

    小草AI
  • 第四章--第二节:类

    在上面的代码中方法 init 是一个特殊的方法,在创建类的实例的时候,实例会自动调用这个方法,一般用来对实例的属性进行初使化。另类里面的两个方法都有 self ...

    喵叔
  • 贝塞尔曲线之爱琴海 -- 定不负相思意

    前言: 一个人有多不正经,就有多深情。一个程序员有多闷,就代表ta有多骚。 我不等山无棱,不等夏雨雪,不等天地合。因为即使江水为竭,即使冬雷震震,我都在你一...

    谦谦君子修罗刀
  • Django处理json数据

    简单、

扫码关注云+社区

领取腾讯云代金券