组合就是, 一个类或一个类的对象中的某一个属性, 这个属性是另外一个类的对象python
用来解决类与类之间代码冗余的问题 (代码重用性)app
组合和继承都是有效的利用已有类的资源的重要方式, 但两者的概念和使用场景不一样code
# 人类 class Person: def __init__(self,name,age,sex): self.name =name self.age = age self.sex = sex def run(self): print(f"{self.name}跑起来") # 歌星类 class Start(Person): def sing(self): print("唱歌") # 诗人类 class Poet(Person): def write(self): print("写诗") S1 = Start("毛不易",25,"man") P1 = Poet("李白",10000,"man") S1.run() # 毛不易跑起来 P1.run() # 李白跑起来
🍔下面这个例子就是"bank"类的对象做为一个组件放置在其余类或其余类的对象中,成为他们的属性 🍔示例讲解 : 餐厅里有个员工和老板, 老板给员工发工资, 员工办了张卡来收工资 class People: school = "蟹堡王餐厅" def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex class Staff(People): # 员工 bank_card = {} # 银行卡 {xx银行:余额} def sell(self): print(f"{self.name}正在卖蟹堡") def apply_catd(self,card_name): # 办银行卡 self.bank_card[card_name] = 0 print(f"{self.name}办了一张{card_name}卡") class Boss(People): # 老板 def payoff(self,obj,obj_card_name,money): obj.bank_card.update({obj_card_name:money}) print(f"老板{self.name}给{obj.name}的{obj_card_name}卡打了{money}元工资") class Bank: # 出卡的类 def __init__(self,bank_name): self.bank_name = bank_name # 实例出银行卡 card1 = Bank("蟹堡银行") # 实例出一个员工 S1 = Staff("派大星",35,"man") # 实例老板 B1 = Boss("姗姗",30,"woman") # 员工办卡 S1.apply_catd(card1.bank_name) # 老板给员工发工资 B1.payoff(S1,"蟹堡银行",300) # 查看员工的工资卡字典 print(S1.bank_card) '''执行输出 派大星办了一张蟹堡银行卡 老板姗姗给派大星的蟹堡银行卡打了300元工资 {'蟹堡银行': 300} '''