私は、増加する整数を別の関数に渡す必要があるメソッドを持っています。自動インクリメンタル呼び出し可能?
私はそうのようにこれを行うことができます:
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()'?何故ですか? –
[あなたのコードは '0 1 2'を出力するとは思わない](http://ideone.com/kvCE1)。そして、私は 'number = new Incrementer()'について話しているわけではありません。ここでは混乱するようですが、Pythonには 'new'演算子はありません。私は[記述子](http://docs.python.org/reference/datamodel.html#descriptors)の呼び出しについて話しています。 –