<p>我将首先抛弃<code>returnFoo</code>方法,因为键入<code>apple.price</code>的时间更短:</p>
<pre><code>class Fruit(object)
def __init__(self, name, qty, price)
self.color = str(color)
self.qty = int(qty)
self.price = float(price)
</code></pre>
<p>如果不接受<code>qty='100'</code>之类的任意输入,则也不需要类型转换:</p>
^{pr2}$
<p>剩下的就是一个只存储值的类。那样的话,我就用字典:</p>
<pre><code>fruit = {
'color': 'red',
'qty': 1000,
'price': 1.99
}
</code></pre>
<p>要计算成本,首先需要水果:</p>
<pre><code>fruits = [{
'color': 'red',
'qty': 1000,
'price': 1.99
}, {
'color': 'blue',
'qty': 100,
'price': 15.99
}, {
'color': 'orange',
'qty': 10,
'price': 5.99
}]
</code></pre>
<p>然后您可以使用<code>for</code>循环:</p>
<pre><code>total = 0
for fruit in fruits:
total += fruit['qty'] * fruit['price']
</code></pre>
<p>可以使用<code>sum</code>和生成器表达式进一步简化:</p>
<pre><code>total = sum(fruit['price'] * fruit['qty'] for fruit in fruits)
</code></pre>
<p>另一种方法是使用<code>FruitStand</code>类和原始的<code>Fruit</code>类:</p>
<pre><code>class FruitStand(object):
def __init__(self, fruits=None):
self.fruits = fruits or []
def totalCost(self):
return sum(fruit.price * fruit.qty for fruit in self.fruits)
</code></pre>