【发布时间】:2012-02-08 02:39:11
【问题描述】:
我有一个方法,我需要在其中将一个不断增加的整数传递给另一个函数。
我可以这样做:
def foo(i):
print i
def bar():
class Incrementer(object):
def __init__(self, start=0):
self.i = start
def __get__(self):
j = self.i
self.i += 1
return j
number = Incrementer()
foo(number)
foo(number)
foo(number)
正确输出0 1 2 ... 但我觉得我忽略了一种更简单(或内置)的方法?
【问题讨论】:
-
您确定您的代码有效吗?
__get__()方法仅在从新样式类中检索属性时调用,此处似乎不会发生这种情况。 -
是的,它工作正常。你的意思是它应该只在我这样做时才有效:
number = new Incrementer()?这是为什么呢? -
I doubt your code prints
0 1 2。而且我不是在谈论number = new Incrementer()——您似乎在这里混淆了语言,Python 中没有new运算符。我说的是descriptors的调用。
标签: python auto-increment counter