博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
继承与钻石继承
阅读量:6413 次
发布时间:2019-06-23

本文共 1762 字,大约阅读时间需要 5 分钟。

字类继承了父类 那么就是继承了父类中除了私有之外的所有内容,我们可以直接在字类中调用父类的方法或者属性 ,如果是父类中的init内的属性就需要定义在

 

 

# 在单继承中,super负责找到当前类所在的父类,在这个时候不需要再手动传self

class Animal(object):  #创建一个    def __init__(self, name, hp,ad):        self.name =name        self.hp = hp        self.ad = ad    def eat(self):        print('eat in Animal')class Person(Animal):  #继承上面的类    #我们来试着定义一个父类有的属性我们在这个属性中在增加一个属性  比如父类有吃和喝  我们在给字类增加一个睡的属性    #定义属性就是在一个类中的init方法中 所以我们就需要在init方法中定义    def __init__(self, name,hp,ad):  #你需要在字类中把父类的属性也定义以便于你父类中的init方法定义的时候可以接收这些        # Animal.__init__(self, name,hp,ad)        super(Person,self).__init__(name, hp ,ad) #这个里面前面的括号是默认写的子类 和self    #再定义一个你字类所单独具备的方法    def drank(self):        return '%s在喝'%self.name        super().eat()alex = Person('老王', 100, 30)# print(alex.name) #用来执行类对象alex所继承父类的name属性的姓名# print(alex.ad)# super(Person,alex).eat()super(Person, alex).eat()   #如果子类在外部想直接 调用父类的方法可以通过字类直接调用父类的 也可以通过super()来调用 括号内写上字类名 和字类创建的对象名alex.eat()  #可以直接用字类创建的对象直接调用父类的方法和父类方法中的属性#如果父类想直接单独的调用自己的方法直接类名加方法名

如果字类有的方法和属性就不会去查找父类中的而是先去查找自己本类中的

钻石继承:

钻石继承就是多个继承不断的继承

在pytonn3的版本中 class  A :    def func(self):        print('A')class B(A) :    def func(self):        super().func()        print('B')class C (A):    def func(self):        super().func()        print('C')class D(B):    def func(self):        super().func()        print('D')class E(B,C):    def func(self):        super().func()        print('E')class F(D,E):    def func(self):        super().func()        print('F')f = F()f.func()

在python中可以用mro来查看钻石继承中所有的信息

python3的版本中都默认继承object所以python3就是新式类 而python2中可以分为经典类和新式类   

python2中的新式类必须手动继承object它遵循深度继承就是一条路走到底,而python2的新式类和python3的新式类一样都是遵循广度优先

python2中的经典类没有mro方法来查看你的经典类的继承关系

在多继承中就是根据子节点 所在图 的 mro顺序找寻下一个类

转载于:https://www.cnblogs.com/zhaoyunlong/p/8823389.html

你可能感兴趣的文章
java rmi spring 4.0_Java Spring RMI一些尝试
查看>>
JAVA怎么连接华为的HDFS系统_JAVA-API操作HDFS文件系统(HDFS核心类FileSystem的使用)...
查看>>
java牛客网四则运算_数据库刷题—牛客网(51-61)
查看>>
Java get set6_JDK6的新特性(转)
查看>>
java发送邮件 不登陆_Java邮件到Exchange Server“不支持登录方法”
查看>>
编程学习初体验(5. 如何自学编程)(2)
查看>>
思科ISR G1与ISR G1C的区别
查看>>
利用perl提取web配置文件中的域名对应的路径
查看>>
Centos5上安装JRE和LUMAQQ
查看>>
关于监控工具的主动发起性能测试
查看>>
我的友情链接
查看>>
OpenSSL学习(十六):基础-指令rand
查看>>
KeyMob致力于打造国内领先的移动广告平台
查看>>
路由选路原则
查看>>
jvm 学习(一)
查看>>
JavaScript简介
查看>>
SQL Server附加数据库拒绝访问解决方法汇总
查看>>
SM2算法原理及实现
查看>>
RHCA教材翻译计划
查看>>
js-小括号在不同场合下的作用
查看>>