我想使用返回从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化的,也许更简单的方法吗?