擅长:python、mysql、java
<p>我不确定您的目标是什么,但正如我所提到的,您的问题在我看来像是一种代码气味(表明某些地方不正确)</p>
<p>假设您希望^ {< CD1>}实例着火(即创建^ {< CD2>}实例),然后推断火灾损害的健康状况,请考虑下面的重构:</p>
<pre><code>class human:
def __init__(self):
self.health = 100
self.fire = None
def set_on_fire(self):
self.fire = fire()
def suffer_burn_damage(self):
if self.fire is not None:
self.health -= self.fire.damage
class fire:
def __init__(self):
self.damage = 10
bill = human()
print(bill.health) # output: 100
bill.set_on_fire()
bill.suffer_burn_damage()
print(bill.health) # output: 90
</code></pre>
<p>这样,您首先就不需要<code>fire</code>实例来了解<code>human</code>的运行状况。它的“工作”是跟踪它是否被烧毁,以及何时推断它自己的损失</p>
<p>这在更抽象的意义上也是有意义的——这也是使用OOP的要点之一。现实生活中的火有一定的能量。一个人一旦着火,他的“健康”就可以从火的能量中推断出来。火灾本身不需要知道人类的健康状况,也不需要知道其他任何事情</p>