0

我正在尝试执行以下代码来理解 python 中的类数据成员,但它抛出了 StopIteration 错误,

class PizzaShop():
    pizza_stock = 10
    def get_pizza(self):
        while not PizzaShop.pizza_stock:
            PizzaShop.pizza_stock -= 1
            yield "take yours pizza order, total pizzas left {}".format(PizzaShop.pizza_stock)

mypizza_shop = PizzaShop()
pizza_order = mypizza_shop.get_pizza() 
print "{}".format(repr(pizza_order.next()))

我期望它应该首先打印一些消息,然后是我使用 python 2.7、ubuntu 32bits os 的任何异常

输出:

Traceback (most recent call last):
File "/home/scott/pythonfiles/core_python/pizza.py", line 10, in <module>
print "{}".format(repr(pizza_order.next()))
StopIteration
4

1 回答 1

3

问题是这条线

while not PizzaShop.pizza_stock:

如果 Pizza_stock 不为​​零,这将立即停止。它总是这样。你可能打算写

while PizzaShop.pizza_stock:

无论如何,如果您想了解有关值、类等在 Python 中的行为方式的详细信息,您应该查看文档。它与 Java 非常不同。

PS 以下是不必要的,因为str.format有调用 repr 的简写。此外,您不应该.next直接调用魔术方法。请改用内置函数next()

print "{}".format(repr(pizza_order.next()))

应该

print "{!r}".format(next(pizza_order))
于 2013-09-12T05:23:52.943 回答