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

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)
  需要注意,使用组合关系时,要尽量避免两个或多个类之间混合使用彼此的类对象作为自己的类属性,这样会陷入循环调用的麻烦中,容易引发混乱。

阿斯商务法庭正审理加维注册案件,球员仍存在免费离队的可能直播吧3月7日讯据阿斯报报道,巴塞罗那商务法庭正在审理加维续约注册的案件,若巴萨被认定不符合财政公平政策的条款,那么俱乐部将承担加维在6月30日原合同期满后自由离队的风险。去年9月过往云烟邮报07惨败利物浦前,曼联球员群聊讨论争冠前景直播吧3月7日讯英超第26轮,曼联07惨败利物浦。每日邮报记者ChrisWheeler撰文谈到了战利物浦赛前曼联队内的情况。文章中表示,在联赛杯夺冠和足总杯战胜西汉姆联后,据说战利研报笔记20230307(固态电池关键瓶颈突破)固态电池传统锂电的电解质是液态的,这导致了一系列的缺点,如耐用性差容量低,有安全隐患,以及有毒和碳足迹等环境问题,因此它并不太适合电动汽车等应用。为了解决这些缺点并进一步提高能量密实操篇亚马逊关键词优化指南及工具分享!关键词优化并不是一个新内容,合理布局关键词可以增加产品被平台及搜索引擎收录的概率,提高权重,增加产品曝光量。但是对于亚马逊卖家来说,关键词又应该加在哪里?密度如何控制呢?一平台规则数据结构与算法快速排序一定义同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。不同的是,冒泡排序在每一轮中只把1个元素冒泡到数列的一端,而快速排序则在每一轮挑选一个基用于工程应用的粘性土壤什么是黏性土?黏性土指含黏土粒较多,具有粒间连结的细粒土。具有黏性和可塑性,孔隙小而多,透水性弱,力学性质随含水量大小而变化等特点。土壤内聚力是土木工程和岩土工程的基本组成部分,为3月6日加密新闻一览Binance。US是未注册的证券交易所吗?苹果为什么要封锁Uniswap?ConsenSys加入zkEVM大逃杀竞赛每日要闻3月6日,星期一加密货币市场正在挣扎!上周在非常狭窄的范围内横盘整理后,比特币和ETH在周五分别跌全国多地上演抢车潮,部分车型卖断货,新能源车也出台新政促销费这两天,相信大家都被湖北上演的购车热潮吸住了眼球。不错,近日有关湖北东风汽车公司向省内消费者发放大额购车补贴,从而引发广大消费者抢购式订车,导致部分车型卖断货的消息一度冲上全网热搜预防甲流最好的方法是?甲流(H1N1流感)是一种高度传染性的呼吸道疾病,以下是预防甲流的十条有效措施1。接种疫苗接种甲流疫苗是预防甲流最有效的方法之一。2。避免接触病毒避免接触已感染甲流的人或病毒污染的童子尿煮蛋应不应该进非遗?吴昆成(华中师范大学)从幼儿园里收集童子尿煮蛋,还说能预防中暑,你有没有觉得有些荒谬?近日,浙江东阳一有关童子蛋的视频引发热议。据悉,童子蛋早在2008年就被列入了东阳市非遗名录。王毅主任这趟没白跑,俄罗斯的长期盟友名单,为中国做了特殊安排俄方最近公布的一份长期盟友名单,为中国做了特殊安排,打得舆论猝不及防。王毅主任访问莫斯科这一趟,果然一点也没有白跑。俄乌打架,想拉中国下水的西方,千方百计企图将中国和俄罗斯绑到一块
一天吸几根烟合适?1一天抽几根烟最合适一天一包烟和一天一支烟,伤害一样大吗?但是抽烟是有危害的,哪怕一根也是危害,最可怕的是吸烟上瘾,慢慢会越吸越多。很多人说,由于应酬必须要抽烟,那么如果一天只抽3便秘的推拿治疗1。揉中脘中脘穴取仰卧位。在上腹部,前正中线上,脐中上4寸。(胸骨剑突与肚脐中点)操作用食指中指无名指三指螺纹面,或中指螺纹面,在脐上四寸的中脘穴按揉,约3分钟。作用健脾益气调中理孙杨晒世界纪录证书!10年匆匆而过,遭药检风波禁赛,转行直播北京时间9月22日,游泳名将孙杨在社交媒体上晒出1500米自由泳世界记录证书,表示10年过去了,也终于收到了。不少网友和粉丝看到后纷纷袒露心声,表示这张证书,是属于你的,也是属于我张军笑了,5金5银,国羽迎来大丰收,国际大赛强势包揽所有冠亚军张军终于笑了,而且笑得非常开心。近年来,曾经中国体坛的梦之队中国羽毛球队是一年不如一年,曾经的辉煌只能当成美好的回忆。而作为中国羽毛球的掌门人,张军更是被很多球迷喊着下课。不过,在被身高给坑惨了!曾经的全美最佳,才21岁,就快被NBA淘汰了?谢里夫库珀曾经是全美最顶级的五星高中生,一度被视为乐透热门。但如今,他却面临着随时都可能被裁员的处境。记者Shams报道称,骑士今天用训练营合同签下了谢里夫库珀。考虑到阵容中加兰和2022女排世锦赛观赛指南2022女排世锦赛将于9月2310月15日在荷兰和波兰举行,这是女排世锦赛第一次由两个国家共同举办,本届女排世锦赛共将有100场比赛,荷兰将承办60场,波兰40场,荷兰和波兰也成为此肉松面包方子很靠谱,新手也能学会,蓬松香软,很好吃这个肉松面包方子很靠谱,烘焙新手也能学会,蓬松香软,很好吃!我家经常做,每次烤8个还不够,尤其是我儿子,每个周末回来,都嚷着叫我做肉松面包,他说面包店没有我做得好吃。家里的肉松面包韦德称赞爱德华兹有詹姆斯的身体,吃惊他只有1米93安德烈伊戈达拉和德维恩韦德在播客里谈到森林狼后卫安东尼爱德华兹。韦德说有次带儿子扎伊尔去佐治亚大学看爱德华兹,韦德说教练和他在看录像,这孩子真有天赋,我看他感觉就是他有一副勒布朗詹法媒波切蒂诺想执教更高档次的俱乐部,尼斯考虑斯科特帕克直播吧9月22日讯据法国媒体footmercato报道,波切蒂诺不太可能执教尼斯,尼斯可能考虑斯科特帕克。报道称,尼斯与波切蒂诺确实进行了很好的接触,但是波切蒂诺依然希望在未来执教德媒俄乌冲突以来,俄美宇航员将首次共同飞往太空来源参考消息网参考消息网9月21日报道据德新社莫斯科9月21日报道,航天大国俄罗斯和美国准备于当地时间21日共同飞往国际空间站。这是自俄乌冲突以来两国首次进行联合太空飞行任务。报道外星人泄露行踪?新疆多地发现巨大不明发光体,究竟是什么新疆现巨大发光体UFO不明飞行物又到访地球了?并且还被很多网友拍摄到了!根据媒体报道9月21日晚,在新疆福海县天空出现不明飞行物,目击者称一开始以为是一个发光的气球,但是随着气球变