イテレータとゲッターを介して文字列でいっぱいの配列に概念的にアクセスできるようにするPythonオブジェクトがあります。ただし、配列内の各要素の正確な値を計算するのは非常にコストがかかるため、配列内の各スロットのコンテンツのプロキシオブジェクトを返し、本当に必要なときに実際の値をその場で計算することを検討しています。
つまり、私はこれを書きたいと思います:
bar = foo.get(10) # just returns a proxy
baz = bar # increase proxy reference
l = [baz] # actually increase proxy reference again.
print baz # ooh, actually need the value. Calculate it only the fly.
v = '%s' % bar # I need the value here again
if bar is None: # I need the value here again
print 'x'
if bar: # I need the value here again
print 'x'
for i in bar: # I need the value here again
print i
C ++では、間接参照演算子をオーバーロードしようとします...何か考えはありますか?
これらのケースのそれぞれについて、特定のpython'magic'関数(__str__
forなどprint baz
)をオーバーロードできることを理解していますが、次のことを疑問に思います。
- これは実際に考えられるすべてのユースケースをカバーします(Pythonマジック関数の使用を伴わない変数のコンテンツにアクセスする方法はありますか)
- これを行うためのより一般的な方法があります