制作从零返回数字的类的最Pythonic方法是什么?

时间:2019-02-01 20:28:19

标签: python generator increment

我想使用返回从0开始递增数字的方法来制作一个类。

我认为最简单的方法是:

class NumbersFromZero:
    def __init__(self):
        self.c = 0

    def get_number(self):
        n = self.c
        self.c += 1
        return n

只有8行,这很好,但是它有一个明显的缺点,那就是必须创建另一个变量,因为返回后我们什么也不能做。

当然,我们可以做一些技巧,例如以-1开头,或者只是增加数字并以减法返回,但是它的Python风格肯定不那么多了,对于大多数程序而言,这是不值得的

所以我能想到的另一种解决方案是使用生成器函数:

class NumbersFromZero:
    def __init__(self):
        self.c = 0
        self.generator_object = self.numbers_generator()

    def numbers_generator(self):
        while True:
            yield self.c
            self.c += 1

    def get_number(self):
        return next(self.generator_object)

尽管它是12行代码,但感觉很好,即所有内容都易于阅读。

但是还有一种更Python化的,也许更简单的方法吗?

0 个答案:

没有答案