当前位置: 首页 > news >正文

自己怎么设置网站集艾室内设计(上海)有限公司

自己怎么设置网站,集艾室内设计(上海)有限公司,巩义网络建设网站,diy手工制作网站类的继承、派生、组合 文章目录 类的继承、派生、组合一、类的继承二、派生三、组合 一、类的继承 继承是一种新建类的方式#xff0c;新建的类称为子类#xff0c;被继承的类称为父类。 继承的特性是#xff1a;子类会遗传父类的属性#xff08;继承是类与类之间的关系新建的类称为子类被继承的类称为父类。 继承的特性是子类会遗传父类的属性继承是类与类之间的关系。 继承的好处就是可以减少代码的冗余。 在python中支持一个类同时继承多个父类。python3中如果一个类没有继承任何类那默认继承object类在python2中如果一个类没有继承任何类不会继承object类。 新式类但凡继承了object的类以及该类的子类都是新式类。 经典类没有继承object的类以及该类的子类都是经典类。 在python3中都是新式类只有在python2中才区别新式类与经典类。 新式类可以通过内置的__str__方法修改实例的打印值。 类继承类时只需要才()中写上需要继承的类即可可以通过类的__bases__属性查看该类继承的类。 class A():passclass B(A):def __str__(self):return from Bprint(B.__bases__) bB() print(b)(class __main__.A,)from B类的继承是为了减少代码的冗余 class People:school五道口职业技术学院def __init__(self,name,age):self.namenameself.ageageclass Student(People):passclass Teacher(People):passsStudent(张三,18) tTeacher(李四,40) print(s.school,t.school) print(s.name,t.name) 五道口职业技术学院 五道口职业技术学院 张三 李四 上述代码中Student和Teacher中没有__init__方法和school属性初始化时就会取父类People中找。People作为Student和Teacher的父类存储了__init__方法和school属性就避免了Student和Teacher中重复存储代码的问题。 菱形继承当一个子继承多个父类时多个父类最终继承了同一个类称之为菱形继承 菱形继承的问题 经典类下查找属性深度优先查找新式类下查找属性广度优先查找 总结一下类中属性查找方法继承的方式为实例、实例对应的类、父类 如果继承关系是非菱形的类的继承会按直接继承的顺序先找完一条路再去找其他的路。如图所示的继承顺序为先找最左侧的路B、E再找中间的路C最后找右侧的路D、F。也可以通过mro表直接查看类的继承顺序。 class F():passclass E():passclass B(E):passclass C():pass class D(F):passclass A(B,C,D):passprint(A.__mro__)(class __main__.A, class __main__.B, class __main__.E, class __main__.C, class __main__.D, class __main__.F, class object)菱形继承的实现原理(新式类)图中的继承顺序为首先按A的直接继承顺序找B这条路为B、E到两条路相交的节点G后会跳转到下一条路C再到下一条路D找到D、F当三条路全部找完以后再找节点G之后再找F。 class H():passclass G(H):pass class F(G):passclass E(G):passclass B(E):passclass C():pass class D(F):passclass A(B,C,D):passprint(A.__mro__)(class __main__.A, class __main__.B, class __main__.E, class __main__.C, class __main__.D, class __main__.F, class __main__.G, class __main__.H, class object) 由于一个类可以继承多个父类会导致复杂的菱形继承问题所以python中设置了Mixins规范(阅读俗称的规范) class Vehicle:passclass FlyableMixin:飞行功能print(flying)class CivilAircraft(FlyableMixin,Vehicle):passclass Helicopter(FlyableMixin,Vehicle):pass 如上代码中CivilAircraft、Helicopter表示两种类型的飞机而飞机既属于交通工具又能飞行为了避免复杂的多类继承问题我们人为规定FlyableMixin表示一种功能混入CivilAircraft、Helicopter继承的类中用以提示代码阅读者FlyableMixin并不被视为父类而Vehicle才是真正的父类。 Mixins规范注意点 mixins类必须表示某种功能混入继承的类中且一般以mixin、able、ible为后缀mixins类表示的功能单一如果需要混入多个功能必须写多个mixins类子类即便没有继承mixins类依然可以工作只是子类会缺少某个功能mixins类功能的实现不依赖继承它的子类 二、派生 派生子类中新定义的属性子类在使用时始终以自己的为准。 class People:school五道口职业技术学院def __init__(self,name,age):self.namenameself.ageageclass Student(People):def __init__(self,name,age,class_name):#People.__init__(self,name,age)super(Student,self).__init__(name,age)self.class_nameclass_namesStudent(张三,18,一班) print(s.name,s.age,s.class_name) 张三 18 一班上述代码中Student类派生了People的__init__方法加入了class_name参数的初始化。由于name和age参数的初始化在People类中已经存在为了避免代码的重复可以重用父类的__init__方法。重用的方法有两种一种是直接指名道姓使用People类的__init__方法这种方式必须将self参数也传如__init__方法中另一种是使用super函数继承People类的__init__方式这种方式无需传入self参数super会自动将函数中的self传给父类的__init__方法。在python3中super()中的参数可以不写但是python2中super()中传的参数必须写上并且必须是新式类才能使用super。 注意点 super函数会以调用super函数的类为起始按类的继承顺序向后寻找继承的方法。可以通过mro表查看super的继承顺序。 __mro__和__bases__的区别在于__bases__只能查看类直接的继承顺序而__mro__可以查看类所以的继承顺序。 class F():pass class A(F):def f1(self):print(from A)super().f1()class B():def f1(self):print(from B)class C(A,B):def f1(self):print(from C)super().f1()cC() print(C.__mro__) print(C.__bases__)(class __main__.C, class __main__.A, class __main__.F, class __main__.B, class object)(class __main__.A, class __main__.B) c.f1()from Cfrom Afrom B上述代码中c.f1()首先会运行C中的f1代码然后运行super().f1()此刻调用super的类是Cmro表中以C为起始向后寻找继承关系找到A类的f1函数再次运行super函数再次在mro表中以A为起始向后找找到B类运行B的f1函数。 三、组合 组合就是一个类的对象具备某一个属性该属性的值是指向另外外一个类的对象。 组合也是用来解决类与类直接代码冗余问题的。 class Course():def __init__(self,name,price):self.namenameself.pricepriceclass Teacher():def __init__(self,name):self.namenameself.course[]pythonCourse(python,1000) cCourse(c,500)t1Teacher(张1) t2Teacher(张2) #将t1、t2的course属性和python、c组合到一起以便于使用course属性可以直接参考price属性的值 t1.course.extend([python,c]) t2.course.append(c) print(t1.course[0].price) print(t2.course[0].price) 1000 500
http://www.dnsts.com.cn/news/245625.html

相关文章:

  • 租车行网站模版wordpress配置七牛云cdn
  • 水贝做网站公司上海网站设计优刻
  • 企业展示网站 价钱网页设计二级页面
  • 外贸网站建设公司市场图虫网官网入口
  • 做网站文章要一篇一篇的写吗公司建设网站怎么做账
  • 做电商网站费用个人餐饮网站模板
  • 重庆建设厅网站首页安徽省住房建设部官方网站
  • 网站建设人力资源人员配置网站建设备案流程
  • 南通单位网站建设网站开发 前端如何学习
  • 做指甲的网站叫什么名字来着湖人队最新消息
  • 网站建设公司网站模板如何为旅游网站店铺做推广营销
  • 域名备案 网站名称wordpress首页小工具
  • 海安做网站的公司佛山技术支持 骏域网站建设
  • 西安设计网站的公司三角镇建网站公司
  • 集团网站方案策划书代码删除wordpress分类目录名
  • 衡水大型网站建设网站开发进阶
  • 网站建设又叫什么wordpress页面中添加小工具栏
  • 北京招聘网站建设wordpress校园
  • 网站建设和维护一年的费用帮别人建设网站多少利润
  • 中国商标网商标查询官方网站阿里网站域名指向怎么做
  • 成都市网站建设服务商给企业做网站的公司西安
  • 牡丹江地区做网站的公司Wordpress数据大了会爆
  • 呼和浩特房产网站建设成都建站免费模板
  • 广州易网外贸网站建设电商设计网站
  • wordpress首页锚点搜索引擎优化的目的是对用户友好
  • 网站如何做监测链接wordpress 百度地图api
  • 网站优化公司哪个好微信小程序商城软件开发
  • 跨境电商网站如何做推广方案广州平面设计
  • asp 网站 源码深圳网络安全公司排名
  • 网站注册搜索引擎的目的是wordpress google推广