使用setattr()
,可以为类实例动态分配特殊方法,如__getitem__
吗?例如,如果我有以下代码:
class Example (object):
pass
然后尝试这个:
>>> example = Example()
>>> setattr(example, '__getitem__', lambda x: 1)
I get this:
>>> 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类上看到这个...我希望有一种方法可以按实例设置它们,但目前我看到的共识是你不能这样做。
Example
的实例,而不仅仅是特定的实例。我想我需要重新考虑一下。 - larsks__getitem__()
在实例上调用一个函数。我会添加一个示例。 - Gareth Latty