分享

python系列学习之:.类与类的关系

 新用户0935snDB 2022-08-03 发布于河南

泛化:子类与父类的关系,概念的复用,耦合度最高

B类泛化A类,意味着B类是A类的一种

做法B类继承A类

关联:(聚合/组合)部分与整体的关系,功能的复用影响一个类的成员

A与B关系,意味着B是A的一部分

做法:在A类中包含B类成员

依懒:合作关系,一种相对松散的协作,影响一个方法。

A类依赖B类,意味着A类中的某些功能是B类中实现

做法:B类作为A类的方法参数,并不是A类成员。

.组合复用原则(复用的最佳实现)

Compsite Reyse Principle

如果单单为了代码复用优先组合复用,而非继承复用

组合的耦合性相对继承低。

员工管理器

1、管理所有员工

2、计算所有员工的工资

员工:

程序员:底薪+项目分红

消售:底薪+锁售额*0.05

测试师……

……

'''

class Calculate:

def calcu(self):

raise NotImplementedError

class Personne:

def __init__(self,name):

self.name=name

self.dict_salary={}

def basecalc(self,target):

if isinstance(target, Calculate):

self.dict_salary[self.name]=target.calcu()

def printpro(self):

for ik,jk in self.dict_salary.items():

print(ik,jk)

class Programme(Calculate):

def __init__(self, base_pay,project_dividend):

self.base_pay=base_pay

self.project_dividend=project_dividend

def calcu(self):

return self.base_pay+self.project_dividend

class Test(Calculate):

def __init__(self, test_pay, sales_dividend):

self.test_pay=test_pay

self.sales_dividend=sales_dividend

def calcu(self):

return self.test_pay+self.sales_dividend*0.05

per=Personne('张三')

pro=Programme(12000,5000)

per.basecalc(pro)

pero=Personne('李四')

tes=Test(1200,3000)

pero.basecalc(tes)

per.printpro()

pero.printpro()

print(per.dict_salary)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多