首页 > 编程语言 > 详细

Python中super()的用法

时间:2021-07-13 11:44:35      阅读:23      评论:0      收藏:0      [点我收藏+]

   参考:https://blog.csdn.net/a__int__/article/details/104600972

  Python里的super().__init__()有什么作用。

  直白的说super().__init__(),就是继承父类的init方法,同样可以使用super()+. 其他方法名,去继承其他方法

  示例对比

  先写一个父类,父类定义了一个__init__方法

class Person(object):
    def __init__(self, name=‘Person‘):
        self.name = name

  在写三个继承自该父类的子类

# 直接继承
class Puple(Person):
    pass

# 重写init方法
class Puple_Init(Person):
    def __init__(self, age):
        self.age = age

# 重写init方法但是继承了父类的init方法
class Puple_Super(Person):
    def __init__(self, name, age):
        
        # self.name = name
        self.age = age
        super().__init__(name)

  第一个子类Puple直接继承
  第二个子类Puple_Init继承并写了init方法
  第三个子类Puple_Super继承并写了init方法,还添加了super().__init__()

  分别创建三个类的对象

pp = Puple()
pp_i = Puple_Init(10)
pp_s = Puple_Super(‘Puple_Super‘,12)

  运行结果对比

  第一个对象可以接调用父类的name属性

print(pp.name)
# Person

  第二个对象pp_i继承自父类,覆盖初始化def init增加属性age,不能调用name属性

# print(pp_i.name)
# AttributeError: ‘Puple_Init‘ object has no attribute ‘name‘

  第三个对象pp_s继承自父类,覆盖初始化init,增加了定义属性age,同时继承了父类的init,即相当于在init方法里也包含self.name = name 所以可以调用name属性

print(pp_s.name)
# Puple_Super

  

Python中super()的用法

原文:https://www.cnblogs.com/minseo/p/15005363.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!