前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用super解决问题

利用super解决问题

作者头像
算法与编程之美
发布2024-05-10 14:00:43
650
发布2024-05-10 14:00:43
举报

1 问题

在继承问题中,我们可以怎么使用super函数呢?

2 方法

super() 函数是用于调用父类(超类)的一个方法,目的是用来解决多重继承时父类的查找问题。Python中类的初始化都是init(), 所以父类和子类的初始化方式都是init(), 但是如果子类初始化时没有这个函数,那么他将直接调用父类的init(); 如果子类指定了init(), 就会覆盖父类的初始化函数init()需要在子类中显示地通过super()来调用父类的init()函数。

代码清单 1

代码语言:txt
复制
class Animal:
   def __init__(self):
       self.name = 'animal'
       self.role = 'parent'
       print('I am father')
class Dog(Animal):
   def __init__(self):
       print('I am son')
       self.name = 'dog'
       super(Dog,self).__init__()
animal = Animal()
wangcai = Dog()
print(wangcai.name)
print(wangcai.role)

代码清单 2

代码语言:txt
复制
class Base(object):
   def __init__(self):
       print('Base create')
class Child1(Base):
   def __init__(self):
       print('Enter 1')
       super(Child1,self).__init__()
       print('Leave 1')
class Child2(Base):
   def __init__(self):
       print('Enter 2')
       super(Child2,self).__init__()
       self.name = '2'
       print('Leave 2')
class Child3(Child1,Child2):
   pass
a = Child3()
print(a.__class__.__mro__)

3 结语

针对怎么利用super函数解决问题,在继承问题中,通过super函数在单继承和多类继承中的应用,证明super在继承中是一个很好的方法。super()用来继承基类的属性和方法;单继承时,super().__init__() 和 父类.__init__()实现的功能是类似的;super不是父类,而是继承顺序的下一个类;super()可以避免重复调用。子类永远在父类前面;如果有多个父类,会根据它们在列表中的顺序被检查;如果对下一个类存在两个合法的选择,选择第一个父类。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档