37 Python面向对象之组合模式

 欢迎来到@一夜看尽长安花 博客,您的点赞和收藏是我持续发文的动力

对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我:3329759426@qq.com 。发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

    专栏:

文章概述:对Python组成模式的介绍

关键词:Python组成模式

本文目录

Python组成模式

  

Python组成模式

from abc import ABCMeta, abstractmethod

#定义部门接口
class IDepartment(metaclass=ABCMeta):
  #需要传入部门人数
  @abstractmethod
  def __init__(self, employees):
    """ implement in child class """

    #如果 print_department 是一个实例方法(即你希望在具体实现中使用实例的属性),
    #那么它应该包括 self 参数
  @abstractmethod
  def print_department(self):
    """ implement in chlid class """


#定义一个会计部门
class Accounting(IDepartment):

  def __init__(self, employees):
    self.employees = employees
    
  def print_department(self):
    print(f"Accounting Department: {self.employees}")
    
    
class Development(IDepartment):
  def __init__(self, employees):
    self.employees = employees
    
  def print_department(self):
    print(f"Development Department: {self.employees}")
    
class ParentDepartment(IDepartment):
  def __init__(self, employees):
    self.employees = employees
    self.base_employees = employees
    self.sub_depts = []
    
  def add(self, dept):
    #总部门列表的添加
    self.sub_depts.append(dept)
    #在自己部门人数的基础上添加别的部门的人数
    self.employees += dept.employees
    
  def print_department(self):
    print("Parent Department")
    print(f"Parent Department Base Employees: {self.base_employees}")
    for dept in self.sub_depts:
      dept.print_department()
    print(f"Total number of employees: {self.employees}")

    
#实例化    
dept1 = Accounting(200)
dept2 = Development(170)

parent_dept = ParentDepartment(30)
parent_dept.add(dept1)
parent_dept.add(dept2)

parent_dept.print_department()

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值