How to make Python 2's __getitem__ work on a class?
How do I make item access ie. __getitem__
available on a class object in Python 2.x?
Я пробовал:
class B:
@classmethod
def __getitem__(cls, key):
raise IndexError
тестовое задание:
B[0]
# TypeError: 'classobj' object has no attribute '__getitem__'
print B.__dict__
# { ... '__getitem__': <classmethod object at 0x024F5E70>}
Как мне сделать__getitem__
work on the class itself?
1 ответ
Решение
Как отметил Martijn Pieters, хотелось бы определить метакласс для поиска специальных методов здесь.
Если вы можете использовать класс в новом стиле (или не знаете, что это):
class Meta_B(type):
def __getitem__(self, key):
raise IndexError
#
class B(object):
__metaclass__ = Meta_B
#
тестовое задание
B[0]
# IndexError, as expected