范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Python类之间的依赖关系和组合关系

  依赖关系指的是在一个类的方法中调用了另一个类的对象
  组合关系则是指一个类的属性是其他类的对象(一对一和一对多) 依赖(关联)关系
  类之间可以有三种关系: 依赖(关联)关系 组合(聚合)关系 继承(实现)关系
  依赖(关联)关系指的是类对象执行某个动作的时候,需要其他类的对象来帮助完成这个操作的情况,其特点为: 将一个类的对象或者类名传到另一个类的方法中使用 此时的关系是最轻的,随时可以更换其他对象
  关联关系的示例如下: class Person:     def play(self, tools):         tools.run()         print("我要打游戏了") class Computer:     def run(self):         print("电脑已经打开,DNF已经登陆") class Phone:     def run(self):         print("王者荣耀已经登陆") xiaoming = Person() xmPhone = Phone() hwComp = Computer() xiaoming.play(xmPhone) xiaoming.play(hwComp)
  输出的结果为: 王者荣耀已经登陆 我要打游戏了 电脑已经打开,DNF已经登陆 我要打游戏了
  在这里补充两个删除对象的方法: delattr(对象名, "属性名")    # 动态删除时比较常用 del 对象名.属性名
  del   和  delattr   功能有限,只能删除实例属性,不能删除类属性: class GirlFriend:     name = "小丽丽"     eye_num = 2     sex = "女"          def __init__(self, name, age):         self.name = name         self.age = age     def chui_tui(self, num):         print(f"{self.name}给大哥捶{num}次腿")         self.love = True      xiaoli = GirlFriend("小丽", 16) xiaohong = GirlFriend("小红", 17) del xiaoli.age delattr(xiaohong, "age") print(xiaoli.__dict__) print(xiaohong.__dict__)组合(聚合)关系
  组合(聚合)关系是对象里包含对象的关系: 将一个类的对象封装到另一个类的对象的属性中,就叫组合一对一关系一对多关系
  一对一关系示例: class BigB:     def __init__(self, name, girl_friend=None):         self.name = name         self.girl_friend = girl_friend     def eat(self):         if self.girl_friend:             print(f"{self.name}带着他的女朋友{self.girl_friend.name}去吃饭")         else:             print("单身狗,吃狗粮!")     def movie(self):         if self.girl_friend:             print(f"{self.name}带着他的女朋友{self.girl_friend.name}去看电影")         else:             print("单身狗不陪看电影!")              class Girl:     def __init__(self, name):         self.name = name      bao = BigB("宝元") friend = Girl("唐艺昕") bao.eat() bao.movie() bao.girl_friend = friend bao.eat() bao.movie()
  输出的结果为: 单身狗,吃狗粮! 单身狗不陪看电影! 宝元带着他的女朋友唐艺昕去吃饭 宝元带着他的女朋友唐艺昕去看电影一对多的组合关系
  同一对一的组合关系类似,我们可以将多个类的对象封装为另一个类的属性,具体示例为: # 有一个男孩类和一个女孩类,男孩类中包含多个女孩类的对象 class Boy:     def __init__(self, name):         self.name = name         self.girl_f = []     def ba_mei(self, girl):         self.girl_f.append(girl)     def happy(self):         for i in self.girl_f:             i.play() class Girl:     def __init__(self, name):         self.name = name     def play(self):         print(f"{self.name}陪你一起玩~o(=•ェ•=)m")          xiaoqiang = Boy("小强")  xiaohong = Girl("小红") xiaoli = Girl("小丽") xiaofei = Girl("小菲")  xiaoqiang.ba_mei(xiaohong) xiaoqiang.ba_mei(xiaoli) xiaoqiang.ba_mei(xiaofei)  xiaoqiang.happy()
  输出的结果为: 小红陪你一起玩~o(=•ェ•=)m 小丽陪你一起玩~o(=•ェ•=)m 小菲陪你一起玩~o(=•ェ•=)m
  组合关系与依赖关系的区别在于,组合关系是将类对象封装为新类的属性来使用,而依赖关系则是将类对象作为参数传给新类的方法使用。
  一对多练习: 创建教师类和学生类 • 教师类有姓名和学生列表两个属性 • 教师类有添加学生的方法(添加的学生是具体对象) • 教师类有显示对应学生姓名和学号的方法 • 学生类有学号/姓名/教师姓名三个属性 • 创建多个学生,并添加到某位教师的学生列表中 • 打印该教师的学生
  参考代码如下: class Teacher:     def __init__(self, name):         self.name = name         self.student_list = []     def add_student(self, *student):    # student前加了*,为了能一次性接收多个实例对象,方便后续使用         self.student_list.extend(student)         for j in student:             j.teacher = self.name     def show_student(self):         for i in self.student_list:             print(f"姓名:{i.name},学号:{i.student_id}")   class Student:     def __init__(self, name, student_id):         self.name = name         self.student_id = student_id         self.teacher = None  alex = Teacher("Alex") bigB = Teacher("宝元")  xiaoming = Student("小明", 123) xiaoqiang = Student("小强", 234) xiaohong = Student("小红", 345) xiaoli = Student("小丽", 456) xiaohu = Student("小虎", 135)  alex.add_student(xiaoming ,xiaoli) bigB.add_student(xiaoqiang, xiaohong, xiaohu)  alex.show_student() bigB.show_student()  print(xiaoming.teacher) print(xiaoqiang.teacher)
  需要注意,使用组合关系时,要尽量避免两个或多个类之间混合使用彼此的类对象作为自己的类属性,这样会陷入循环调用的麻烦中,容易引发混乱。

新签新开门店各10家居然之家2022年上半年营收62。83亿元北京商报讯(记者孔文燮实习记者刘小云)2022年8月30日,居然之家新零售集团股份有限公司(简称居然之家)发布的2022年半年度报告显示,报告期内实现营业收入62。83亿元,二季度亿纬锂能将为宝马NeueKlasse系列车型提供大圆柱锂离子电芯IT之家9月9日消息,今日下午,亿纬锂能发布公告称,公司子公司亿纬动力近日收到德国宝马集团的定点信,将为德国宝马集团NeueKlasse系列车型提供大圆柱锂离子电芯。公告指出,该项百度称,2030年没有自动驾驶能力的电动汽车,将完全失去竞争力百度集团资深副总裁智能驾驶事业群组总经理李震宇自动驾驶正成为智能汽车竞争的焦点,未来35年,将是全球汽车智能化竞争的关键窗口期,到2030年,没有自动驾驶能力的电动汽车将完全失去竞51股半年报业绩增长超500A股半年报今天拉下帷幕,经统计和筛查有51股半年报净利润超1亿元的上市公司同比去年增长超500,51股具体情况如下(1)11股半年报净利润超10亿九安医疗天齐锂业天华超净盛新锂能安海底捞半年报亏损收窄计划重启部分关停门店本报记者孙吉正北京报道8月30日,海底捞国际控股有限公司(06862。HK)(以下简称海底捞)发布2022年中期业绩公告。财报显示,2022年上半年海底捞营业收入总额为167。64自己喜欢的模样晚上马上快十一点,淅沥沥的雨,还在下,因为天然气停气,没炒菜,晚上给孩子煮了嫩花生,空气炸锅烤了几块红薯。就这样凑合了一顿晚饭吃过晚饭,坐一块看电视,闺女想去找朋友玩,怕我不让她去糖友当心!这些蔬菜是主食,再喜欢也不能多吃大家都知道,糖尿病人一般要求是定量吃主食敞开吃蔬菜。因为大部分蔬菜热量低,含糖少,每天吃12斤绿叶蔬菜对血糖都不会造成明显影响。可是有些蔬菜淀粉含量高热量高,就相当于主食,多吃了热华为Mate50系列重磅强势回归!对战iPhone14系列,您更喜欢谁?哈喽,您好!我是原呵呵,点点关注吧,更多精彩内容等着您华为正准备推出Mate50系列,这家华为科技制造商带来了一些新的改进,可能会与苹果iPhone14抗衡。虽然,华为在智能手机行新车丐版也能换两台国产X5,售142。8万路虎揽胜360PS盛世版实拍文懂车帝原创张凯懂车帝原创产品日前,全新路虎揽胜360PS盛世版车型已经到店,新车作为揽胜家族入门版车型,依旧拥有顶配车型同款双王炸进气格栅造型,动力方面搭载低功率版本3。0升涡轮降幅近3万,纯电续航里程超500公里,售价不足15万,还是合资车说到新能源,第一时间你可能想到特斯拉比亚迪,但是别忽略传统车企的崛起,雪佛兰就是其中一员,雪佛兰旗下新能源车型畅巡,入门版续航里程就超过了500km达到了518km,而且降幅比较大新车售价28。98万元起,大众2023款威然上市,新增行云白配色文懂车帝原创高帅鹏懂车帝原创产品日前,我们从上汽大众获悉,2023款威然上市。新车继续推出5款车型可选,售价区间为28。98万40。28万元。与2022款威然相比,新车售价与之保持
海天酱油双标事件发酵,全年业绩恐雪上加霜这个国庆节,很多人都没有出远门,这也让大家有时间网上吃瓜。10月1号最大的瓜莫过于海天酱油双标事件。有自媒体对比了海天酱油的出口产品与国内销售产品,发现出口产品无食品添加剂,国内产遵义市的区划调整,贵州省的第二大城市,为何有14个区县?在之前的文章中,作者和大家聊了一系列关于我国贵州省各个城市的经济发展和区划变迁,例如贵阳市毕节市等等。今天,我们聊聊贵州省的遵义市。遵义市是贵州省的第二大城市,也是著名的黔北粮仓,北溪管道炸了,欧洲命运线也给连到中国去了北海底下一声爆响,北溪天然气管道炸了。对欧洲来说,2022年显然不是一个好年份,战争疫情和能源危机三重压力之下,老欧洲现在的日子并不好过。凛冬将至,欧洲的能源问题却还没有着落,英国特斯拉全球Q3交付破34万辆,0首付再引国内购车潮10月2日,特斯拉正式公布2022年第三季度汽车生产与交付报告。数据显示,特斯拉第三季度共生产了超过36。5万辆汽车,交付了超过34。3万辆汽车。该季度交付表现再创新高,同比增长4新世界上市一周年分享统计数据游戏总时长超5亿亚马逊游戏近日正在为旗下网游新世界上线一周年进行庆祝活动。亚马逊发布一张数据信息汇总图,展示本作上线以来的一些亮眼数据。在这款网游上线后的12个月时间里,全球玩家总计贡献5。69亿3000点保卫战打响,股民们最容易在这时犯什么错?股市跌跌不休,不知不觉中又打响了3000点保卫战。很多人都在看3000点能否守住,到底哪里才是底?这其实并不重要,即便这是大多数人认为的心理底线,但今年4月份该砸穿的时候不也照样砸女篮世界杯决赛,中国队残阵拼尽全力,仍以22分不敌卫冕冠军美国队在今天下午结束的2022年女篮世界杯决赛中,时隔28年再度闯入冠亚军之战的中国女篮6183不敌卫冕冠军美国队。尽管输球掉了决赛,但中国女篮还是追平了世界杯上的历史最佳战绩。因为发烧女篮世界杯中国女篮四大球星产生蜕变!李梦领衔了解中国女篮的球迷都知道,咱们其实是非常有实力的,但近年来在大赛中总是不能完全发挥和展现我们自己,留下了不少遗憾。特别是东京奥运会八进四,咱们在领先9分的大好形势下,被塞尔维亚逆转中美金身告破,塞土勇夺第一,十六强全员出炉,世锦赛最新排位女排世锦赛第一阶段即将收官,A组,波多黎各3比1击败肯尼亚,前者成为最后入围十六强的球队,B组,土耳其3比2拿下波兰,成功拿下小组第一,泰国3比2险胜多米尼加,韩国3比1克罗地亚,中国女排输巴西,自由人被指责太差劲,蔡斌用人再次受到质疑世锦赛小组赛,中国女排在最后一场比赛中以1比3负于了巴西女排,无奈接受了首败。这也是新组建的中国女排在世联赛负于巴西女排后,再次负于对手。这场比赛的失利,对一路凯歌的中国女排来说是女排世锦赛最新积分榜16强名额全部产生,中国女排四个对手确定北京时间10月2日凌晨,女排世锦赛结束了第9个比赛日的争夺,塞尔维亚在与美国的强强对话中30胜出,巴西31送中国女排首败,韩国则31力克克罗地亚迎来首胜,泰国32战胜了多米尼加。目