__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
に設定する方法があることを望んでいましたが、これまでに見たコンセンサスは、あなたはそれを行うことができないということです.