考虑以下Python代码段,我们在其中定义''
,Portfolio
和Company
类。 Deposit
对象只是作为公司和公司的联盟。存款。我们可以在Portfolio
等投资组合上运行指标。问题:
对于我在Profit
或Company
类中包含的每个新指标,我需要在Deposit
类中手动添加相应的函数;尽管他们的行为总是相同的事实:所有投资的总和。有没有办法改善这种逻辑/类的构建? 如果我们需要添加100个其他指标...
Portfolio
课程只有Deposit
个功能,但不是Profit
(假设保证对银行帐户感兴趣)。有没有办法将“未定义”指标视为始终返回0?或者是否有更清洁/更正确的定义这些指标? 如果我们需要涵盖可能有或可能没有不同指标的100种不同投资类型,该怎么办...
Loss
答案 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未明确定义为方法,但可以通过继承和元编程来调用它们