我有一个 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 魔术函数的变量的内容)
- 有一种更通用的方法可以做到这一点