对齐Python类&超一流

时间:2018-04-10 14:36:37

标签: python class derived-class

考虑以下Python代码段,我们在其中定义''PortfolioCompany类。 Deposit对象只是作为公司和公司的联盟。存款。我们可以在Portfolio等投资组合上运行指标。问题:

  1. 对于我在ProfitCompany类中包含的每个新指标,我需要在Deposit类中手动添加相应的函数;尽管他们的行为总是相同的事实:所有投资的总和。有没有办法改善这种逻辑/类的构建? 如果我们需要添加100个其他指标...

  2. ,该怎么办?
  3. Portfolio课程只有Deposit个功能,但不是Profit(假设保证对银行帐户感兴趣)。有没有办法将“未定义”指标视为始终返回0?或者是否有更清洁/更正确的定义这些指标? 如果我们需要涵盖可能有或可能没有不同指标的100种不同投资类型,该怎么办...

  4. Loss

1 个答案:

答案 0 :(得分:1)

第二个问题很简单:您所要做的就是创建一个files: "/etc/nginx/conf.d/nginx.custom.conf": mode: "644" owner: "root" group: "root" content: | client_header_timeout 300; client_body_timeout 300; keepalive_timeout 300; send_timeout 300; proxy_connect_timeout 300; proxy_read_timeout 300; proxy_send_timeout 300; container_commands: 01_restart_nginx: command: "sudo service nginx reload" 类,其中每个指标定义为返回0的方法。然后派生所有Base个类({{1}来自Invest类的},Company等等,因为所有未定义的指标都会调用Deposit类中的相应方法。

第一个问题有点难度,因为它需要一些元编程。您的Base类也可以从Base类派生,然后查找Portfolio类(Base)的方法字典以检索所有度量标准名称。然后,对于所有这些指标,它会创建一个特定的lambda方法,为Base列表中的每个项调用此指标,并总结结果。这是一个骨架代码:

Base.__dict__

产生以下输出:

Investments

如您所见,A.f1,B.f2,P.f1和P.f2未明确定义为方法,但可以通过继承和元编程来调用它们