您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:Python基础知识学习之类的继承

51自学网 2021-10-30 22:35:59
  python
这篇教程Python基础知识学习之类的继承写得很实用,希望能帮到您。

一、继承的格式

类的继承格式如下,括号中的为父类名。

class 类名(父类名): 代码

二、单继承

下面我们让Man继承自Master类,并调用继承的showSkill方法。

class Master():    def __init__(self):        self.skill='炒菜'    def showSkill(self):        print(self.skill)class Man(Master):    passman=Man()man.showSkill()

炒菜

三、多继承

我们可以在括号中写入多个父类,并用逗号隔开,就可以表示多继承。
需要注意的是,如果父类中有同名的方法或属性被子类继承,子类优先继承第一个父类的方法。

'''测试python多继承多继承时,若父类有同名的属性或方法,则优先继承先继承的父类'''class Master():    def __init__(self):        self.skill='炒菜'    def showSkill(self):        print(self.skill)class Bagger():    def __init__(self):        self.skill='乞讨'    def showSkill(self):        print(self.skill)class Man(Master,Bagger):    passman=Man()man.showSkill()

炒菜

四、重写父类方法

python中重写父类方法不需要override等任何的关键字,直接把原来的方法重写一遍就好。

class Master():    def __init__(self):        self.skill='炒菜'        print("Master初始化完毕")    def showSkill(self):        print(self.skill)class Bagger():    def __init__(self):        self.skill='乞讨'        print("Bagger初始化完毕")    def showSkill(self):        print(self.skill)#重写父类的方法class Man(Master,Bagger):    #重写__init__方法时,并不会调用父类的__init方法    def __init__(self):        #重写父类的属性skill        self.skill='飞天'    def showSkill(self):        print("我的技能是:"+self.skill)man=Man()man.showSkill()

我的技能是:飞天

五、打印继承关系

通过__mro__()方法我们可以得到当前类继承的所有类。

class Master():    def __init__(self):        self.skill='炒菜'    def showSkill(self):        print(self.skill)class Bagger(Master):    passclass Man(Bagger):    passman=Man()print(Man.__mro__)

六、调用父类方法

我们可以通过super().方法名,来调用父类中的 方法,哪怕该方法在子类中被重写了。

class Master():    def __init__(self):        self.skill='炒菜'    def showSkill(self):        print(self.skill)class Man(Master):    def __init__(self):        self.skill='吃饭'    def showSkill(self):        print(self.skill)        super().__init__()        super().showSkill()man=Man()man.showSkill()

吃饭
炒菜

七、私有属性与方法

我们可以在方法或属性名前加上 __ 来表示私有,在类的继承中,只有父类的私有方法无法被继承,其他属性与方法都将被继承,但私有属性不能在子类中直接访问,但我们可以同过继承的父类公有方法来对其访问。
下面我们定义私有属性money,并创建共有方法set_money与get_money从子类中对其进行访问。

class Master():    #在属性或方法面前加__,表示访问权限为私有    __money=100000    def __init__(self):        pass    #设置为私有方法,无法被继承    def __showMoney(self):        print(self.__money)    #使子类可以通过共有方法访问私有属性    def get_money(self):        return self.__money    def set_money(self,money):        self.__money=moneyclass Man(Master):    passman=Man()print("原来的money:"+man.get_money().__str__())man.set_money(12)print("后来的money:"+man.get_money().__str__())

原来的money:100000
后来的money:12

到此这篇关于Python基础知识学习之类的继承的文章就介绍到这了,更多相关python类的继承内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net!


Django实现聊天机器人
Django集成富文本编辑器summernote的实现步骤
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。