【发布时间】:2014-06-15 16:47:01
【问题描述】:
我如何进行项目访问,即。 __getitem__ 在 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__ 对班级本身起作用?
【问题讨论】:
-
您必须在 metaclass 上放置特殊方法。
-
@MartijnPieters 我没能找到这个问题,谢谢马丁。虽然我的
B是old-style class,但是这里重要的是我看到的特殊方法。 -
旧式类也不支持
@classmethod装饰器(或任何其他描述符)。 -
@MartijnPieters 那时我犯了一个错误。但我想知道,我的装饰器在这里会发生什么?我的类是否仍然是老式的,装饰器是否被忽略。
标签: python magic-methods python-datamodel first-class