Python----------面向对象编程(二)继承,派生

一.继承 inheritance和派生derived

1.定义

继承是从已有类中派生出新的类,新类具有原来的数据属性和行为,并扩展新的能力
派生是从一个已有的类中衍生出新类,在新的类上添加属性和行为

2.作用

(1)用继承派生机制,可以将一些共同功能加在基类中,实现代码的共享
(2)在不改变超类原来代码的基础上,改变原来由的功能

3.常用名词

上级:基类(base class)/ 超类(super class)/父类(father class)
下级:派生类(derived class)/子类(child class)

4.说明

任何类都间接的继承object类
object类是一切类的超类
类内的__base__属性:用来记录此类的基类

二.单继承

1.语法

class 类名(超类名):
    语句块

示例:

class Human():
    def say(self,text):
        print("某人说",text)
class Student(Human):
    def study(self,subject):
        print("正在学",subject)
class Teacher(Student):
    def teach(self,subject):
        print("教的科目是",subject)

stu1=Student()
stu1.say("I need help")
t1=Teacher()
t1.say("I am a teacher")#一级一级向上找

三.覆盖:override

定义

覆盖是指在有继承派生关系的类中,子类实现了与基类同名的方法,在子类实例调用方法时,实际调用的是子类中的覆盖版本

四.相关函数

1.super函数

super(type,obj)#返回绑定超类的实例,要求obj必须为type的实例
super()#返回绑定超类的实例,等同于super(__class__,实例的第一个参数)且必须在方法内调用

作用:返回超类的实例,用超类实例来调用其自身的方法
示例:

class A():
    def job(self):
        print("A被调用")
class B(A):
    def job(self):
        print('B被调用')
    def do_job(self):
        super(B,self).job()#调用超类的方法
        super().job()#调用超类的方法
        #super(__class__,self).job()#调用超类的方法,但是不推荐使用
        
b=B()
b.job()#由上面的覆盖原理可知,打印出'B被调用'
super(B,b).job()#把子类对象当成父类来用,此时打印'A被调用'

五.父类子类的初始化方法

1.说明:当子类实现了__init__方法后,父类的__init__方法将被覆盖,即将不再主动调用父类的__init__方法,会引起父类的属性得不到初始化,此时需要显示调用父类的初始化方法

示例:

class Human():
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def show_info(self):
        print('姓名',self.name)
        print('年龄',self.age)
class Student(Human):
    def __init__(self,name,age,score):
        super().__init__(name,age)#显式调用基类的初始化方法
        self.score=score
    def show_info(self):
        super().show_info()#调用基类的方法
        print('成绩为',self.score)

stu1=Student('小明',23,89)
stu1.show_info()#打印出结果为姓名 小明 \n 年龄 23 \n 成绩为 45
                                                                    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值