欢迎来到@一夜看尽长安花 博客,您的点赞和收藏是我持续发文的动力
对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我:3329759426@qq.com 。发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。
专栏:
文章概述:对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()