博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中的面向对象学习以及类的继承和继承顺序
阅读量:6716 次
发布时间:2019-06-25

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

继承

首先编写一串关于类的代码行:

__author__ = "Yanfeixu"# class People: 经典类不用加(object)class People(object): #新式类    def __init__(self,name,age):        self.name = name        self.age = age        self.friends = []        print("--doens't run ")    def eat(self):        print("%s is eating..." % self.name)    def talk(self):        print("%s is talking..." % self.name)    def sleep(self):        print("%s is sleeping..." % self.name)class Relation(object): # 子类的创建,也要定义构造函数    def __init__(self,n1,n2):        print("init in relation")    def make_friends(self,obj): #w1        print("%s is making friends with %s" % (self.name,obj.name))        self.friends.append(obj.name)class Man(Relation,People):  # 该子类继承多个父类,并且重构了自己的构造函数    # def __init__(self,name,age,money):   #---》先覆盖父类    #     #People.__init__(self,name,age)  # 如果有很多的父类情况下,这种父类的调用就很麻烦    #     super(Man,self).__init__(name,age) #新式类写法,相比于上面写法比较简洁点----》再继承父类    #     self.money  = money #---》再添加自己特有的功能    #     print("%s 一出生就有%s money" %(self.name,self.money))    def piao(self):        print("%s is piaoing ..... 20s....done." % self.name)    def sleep(self):        People.sleep(self)        print("man is sleeping ")class Woman(People,Relation):  #每个子类之间是互不干扰的    def get_birth(self):        print("%s is born a baby...." % self.name)m1 = Man("NiuHanYang",22)# w1 = Woman("ChenRonghua",26)## m1.make_friends(w1)# w1.name = "陈三炮"# print(m1.friends[0])

该部分的学习主要注意代码行中注释的部分,因为在继承部分小知识点非常多,所以注意点基本都是写在注释之中。

还有就是从本人学习类这部分来看,个人的心里感受就是,在类的封装部分的实例与类的继承部分的父类和子类关系基本上原理上是一样的,类的实例化只能从类中得到类的属性,但是想要新的属性的时候就要重新定义性的函数方法,这种原理其实和子类中的重构函数是一样的道理。

类的继承顺序

在这里插入图片描述

python2:经典类是按深度优先来继承,新式类是按广度优先来继承。

python3:经典类和新式类都是按广度优先来继承,因为效率会比较高。
注意区分经典类和新式类的区别和联系!在上面的代码行中有提到。

小福利:

在这里插入图片描述

转载于:https://www.cnblogs.com/souhaite/p/10585604.html

你可能感兴趣的文章
Android 网络通信框架Volley简介(Google IO 2013)
查看>>
杂记- 3W互联网的圈子,大数据敏捷BI与微软BI的前端痛点
查看>>
Android -- setWillNotDraw()
查看>>
魔幻的曲率--已知曲率画图形
查看>>
.Net额外小工具
查看>>
【转】Eclipse的启动问题【an error has occurred see the log file】
查看>>
一款纯css3实现的条纹加载条
查看>>
ADF_Advanced ADF系列1_Fusion应用的客制和个性化(Part1)
查看>>
multipart/form-data和application/x-www-form-urlencoded的区别
查看>>
[LeetCode] Reorder List 链表重排序
查看>>
[总结]文件传输模型之文件中转
查看>>
jQuery(一)引入
查看>>
Facebook内部分享:26个高效工作的小技巧
查看>>
jstack和线程dump分析
查看>>
NETSH WINSOCK RESET这条命令的含义和作用?
查看>>
SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int
查看>>
第一次使用Android Studio时你应该知道的一切配置(二):新建一个属于自己的工程并安装Genymotion模拟器...
查看>>
AtomicInteger简介
查看>>
(转)解决ScrollView嵌套ListView或者GridView导致只显示一行的方法
查看>>
html5 -- audio标签
查看>>