前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【python入门到精通】python面向对象super用法

【python入门到精通】python面向对象super用法

作者头像
大数据小禅
发布2021-12-21 14:47:37
2630
发布2021-12-21 14:47:37
举报
文章被收录于专栏:YO大数据

作者 :“大数据小禅”

子类有自己构造的时候会自动去覆盖父类的一个方法,即两个类上一个类有init构造,作为父类,另一个类作为子类去继承,子类如果没有定义init方法,子类的构造就不会被父类覆盖,但是,如果子类定义了自己的init构造方法,那么就会覆盖掉父类的方法,总的来说就是子类自己写了构造方法init就不会去调用父类的init构造方法了,而是会覆盖。上一篇博文那个波斯猫的例子就是一个典范,在子类实例化调用父类init里面的关键字参数的值可以打印,而父类中在别的函数定义的关键词参数则不可以打印,而打印除init类中的其他关键字参数也没有必要,因为调用的时候你可以赋值。在上一篇博文中字子类面前充定义init构造函数,那么父类构造中定义的全部关键字参数将全部失效。

super的作用及用法:

子类的构造里面要调用父类的一个构造又不被覆盖的话就要用到super了

调用父类构造的第一种方法
代码语言:javascript
复制
class Animal:
    def __init__(self,name):
        self.name=name
class Dog(Animal):
  def __init__(self):
         Animal.__init__(self,"dog")
         print("dog")
dog=Dog()
print(dog.__dict__)

输出:dog {'name':'dog'}
使用super进行调用并赋值:
代码语言:javascript
复制
class Animal:
    def __init__(self,name):
        self.name=name


class Dog(Animal):

  def __init__(self):
         super(Dog,self).__init__("dog")
         print("dog")
dog=Dog()
print(dog.__dict__)
print(dog.name)

输出:
dog
{'name': 'dog'}
dog
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/12/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • super的作用及用法:
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档