__getitem__
是否可以使用 为类实例动态分配特殊方法,例如setattr()
?例如,如果我有这个:
class Example (object):
pass
然后试试这个:
>>> example = Example()
>>> setattr(example, '__getitem__', lambda x: 1)
我明白了:
>>> example['something']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'Example' object has no attribute '__getitem__'
但当然这很好用:
>>> example.__getitem__('something')
1
显然这里发生了一些我不明白的事情,关于 Python 如何为这类事情进行方法查找。这些方法是否必须在类上设置,而不是在实例上?
更新:
所以,我应该说清楚,我知道我可以在Example
课堂上看到这一点......我希望有一种方法可以为每个实例设置它们,但到目前为止我看到的共识是你不能这样做.