【Python学习笔记】继承和super().__init__()

关于继承和super的使用本文做以下解释,方便新手理解编程用法。

引言

在面向对象编程中,你编写表示现实世界中的事情和情景的的类,并基于这些类来创建对象。编写类时,你定义一大类对象都有通用行为。基于类创建对象时,每个对象都自动具备这种通用行为,然后可根据需要赋予每个对象独特的个性。
Python编写类时,并非总要从空白开始。如果你编写的类是另一个现成类的特殊版本,可使用继承。一个类继承另一个类,它将自动获得另一个类的所有属性和方法;此外,子类在继承父类的属性和方法的同时,还可以定义自己的属性和方法。

super的使用

super是一个特殊函数,能够将父类和子类关联起来。

  1. 子类继承父类,但不重写构造函数__init__(初始化),那么子类会自动继承父类属性和方法
class Person:
        def __init__(self):
                self.name = 'name'
                self.age = 'age'
        def Hello(self):
                print("成功继承父类方法")
		
class Gao(Person):
        pass

p = Person()
g = Gao()
print('父类属性:',p.name)
print('父类属性:',p.age)
print('继承父类属性:',g.name)
print('继承父类属性:',g.age)
g.Hello()

输出结果:
父类属性: name
父类属性: age
继承父类属性: name
继承父类属性: age
成功继承父类方法
  1. 子类继承父类,重写构造函数__init__(初始化),但不使用super初始化父类构造函数,那么子类不会自动继承父类的属性,会继承方法
class Person:
        def __init__(self):
                self.name = 'name'
                self.age = 'age'
        def Hello(self):
                print("成功继承父类方法")
		
class Gao(Person):
        def __init__(self):
                self.height = 'height'

p = Person()
g = Gao()
g.Hello()
print('父类属性:',p.name)
print('父类属性:',p.age)
print('子类属性:',g.height)
print('继承父类属性:',g.age)

输出结果:
成功继承父类方法
父类属性: name
父类属性: age
子类属性: height
Traceback (most recent call last):
  File "person.py", line 187, in <module>
    print('继承父类属性:',g.age)
AttributeError: 'Gao' object has no attribute 'age'
  1. 子类继承父类,重写构造函数__init__(初始化),且使用super初始化父类构造函数,那么子类会自动继承父类的属性和方法
class Person:
        def __init__(self):
                self.name = 'name'
                self.age = 'age'
        def Hello(self):
                print("成功继承父类方法")
		
class Gao(Person):
        def __init__(self):
                super().__init__()
                self.height = 'height'

p = Person()
g = Gao()
g.Hello()
print('父类属性:',p.name)
print('父类属性:',p.age)
print('子类属性:',g.height)
print('继承父类属性:',g.age)

输出结果:
成功继承父类方法
父类属性: name
父类属性: age
子类属性: height
继承父类属性: age

参考《Python编程从入门到实践》

  • 14
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修炼清爽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值