Python学习之7.7继承

Python学习

7.7 继承

继承性最基本的作用就是避免我们定义重复的方法和重复的变量。
Python允许多继承,也就是一个子类可以继承多个父类。

1.继承的格式:
首先,建议一个类写在一个模块中。
如,在c4.py文件中定义了Human这个父类:

class Human():
    pass

在c5.py文件中定义一个子类Student,它继承父类Human的格式如下:

from c4 import Human

class Student(Human):

其中括号“()”里用来添加父类的名字。

2.继承的内容:
以下一个实例:
父类的代码如下:

class Human():
    sum = 0

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def get_name(self):
        print(self.name)

子类的代码如下:

from c4 import Human

class Student(Human):
    
    def do_homework(self):
        print('English homework')


student1 = Student('石敢当', 18)
print(student1.sum)
print(Student.sum)
print(student1.name)
print(student1.age)
student1.get_name()

输出结果:
在这里插入图片描述
以上可以说明,子类继承父类的类变量、实例变量、实例方法。

3.子类可以有自己的构造函数:
子类不可能和父类完全一样,如果一样那就没有意义了,所以子类有它自己的一些变量和方法。比如我们定义一个子类的构造函数,里面新加入一个子类特有的变量school,如下:

from c4 import Human

class Student(Human):

    def __init__(self, school, name, age):
        self.school = school
        super(Student, self).__init__(name, age)
    
    def do_homework(self):
        print('English homework')


student1 = Student('人民路小学','石敢当', 18)
print(student1.name)
print(student1.age)

打印结果:
在这里插入图片描述

以上可知,在子类里面调用父类的构造函数,用关键字“super”,第一个参数为子类的名字,第二个参数为self,后面用点号调用父类的构造函数。

4.super关键字也可以用来子类方法调用父类方法:
父类代码:

class Human():
    sum = 0

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def do_homework(self):
        print('This is a parent method.')

子类代码:

from c4 import Human

class Student(Human):

    def __init__(self, school, name, age):
        self.school = school
        super(Student, self).__init__(name, age)
    
    def do_homework(self):
        print('English homework')


student1 = Student('人民路小学','石敢当', 18)
student1.do_homework()

运行结果:
在这里插入图片描述
以上可知,当子类与父类中有重名的方法时,会优先调用子类的方法。那么如何调用父类的方法呢?Python规定用super关键字来实现。如下:
在这里插入图片描述
输出结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值