分配(而不是定义)__ getitem__魔术方法会破坏索引编制

NichtJens

我有一个类似于以下示例(非常简化)的包装器类:

class wrap(object):
    def __init__(self):
        self._data = range(10)

    def __getitem__(self, key):
        return self._data.__getitem__(key)

我可以这样使用它:

w = wrap()
print w[2] # yields "2"

我以为可以通过更改为以下内容来优化并摆脱一个函数调用:

class wrap(object):
    def __init__(self):
        self._data = range(10)
        self.__getitem__ = self._data.__getitem__

但是,我收到

TypeError:“包装”对象不支持索引

对于print w[2]后者的版本线。

直接调用该方法(即)print w.__getitem__(2)在两种情况下均有效...

为什么分配版本不允许索引?

user2357112支持Monica

必须在类上定义特殊方法(基本上是两端都带有两个下划线的任何方法)。特殊方法内部查找过程完全跳过了实例字典。除其他外,如果您这样做

class Foo(object):
    def __repr__(self):
        return 'Foo()'

__repr__您定义方法仅用于的实例Foo,而不用于repr(Foo)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在类上定义魔术方法

来自分类Dev

扩展枚举并重新定义__getitem__的问题

来自分类Dev

Python 3.5键入ABCMeta不会定义'__getitem__'

来自分类Dev

自定义分配器方法未调用

来自分类Dev

分配时未定义的方法“ relations”属于关联

来自分类Dev

分配给自定义 init 方法中的属性

来自分类Dev

数组索引值未定义,数组不是

来自分类Dev

数组索引值未定义,数组不是

来自分类Dev

角度单元测试:调用另一个控制器中定义的方法会抛出“未定义”不是错误

来自分类Dev

有没有一种方法可以为定义__getitem__方法的类禁用迭代而无需在键上施加约束?

来自分类Dev

为什么SendwithUs使您定义实例方法而不是类方法?

来自分类Dev

是否可以将模型分配给ionSlide或从ionSlideBox获取选定的幻灯片(而不是索引)?

来自分类Dev

为字符串中的每个字符(不是字符位置!)分配唯一索引

来自分类Dev

为什么在值而不是指针上定义方法?

来自分类Dev

Laravel路由的自定义方法而不是资源

来自分类Dev

定义为方法签名的委托不是有效的替代

来自分类Dev

字符串的未定义方法“ + @”,而不是空格问题

来自分类Dev

Angular方法以未定义而不是JSON对象的形式返回

来自分类Dev

未定义不是构造函数()方法中的对象

来自分类Dev

TypeError'float'对象在数组分配中没有属性'__getitem__'

来自分类Dev

如何直接通过方法而不是通过实例将值分配给变量

来自分类Dev

robovm可以在堆栈而不是堆上分配本地方法对象吗?

来自分类Dev

Python:NoneType对象没有属性__getitem__。但是它不是nonetype

来自分类Dev

R:用序号索引的矢量元素的分配顺序是否已明确定义?

来自分类Dev

分配groupby多个索引的结果,应用自定义功能,返回到父数据框

来自分类Dev

R stat定义x上标签的角度,以为标签文本分配索引值

来自分类Dev

Javascript映射显示错误消息(如果未定义而不是破坏)

来自分类Dev

Rails的构建方法会破坏对象ID?

来自分类Dev

分配自定义URLSessionDelegate是否会覆盖未实现方法的默认行为?

Related 相关文章

  1. 1

    在类上定义魔术方法

  2. 2

    扩展枚举并重新定义__getitem__的问题

  3. 3

    Python 3.5键入ABCMeta不会定义'__getitem__'

  4. 4

    自定义分配器方法未调用

  5. 5

    分配时未定义的方法“ relations”属于关联

  6. 6

    分配给自定义 init 方法中的属性

  7. 7

    数组索引值未定义,数组不是

  8. 8

    数组索引值未定义,数组不是

  9. 9

    角度单元测试:调用另一个控制器中定义的方法会抛出“未定义”不是错误

  10. 10

    有没有一种方法可以为定义__getitem__方法的类禁用迭代而无需在键上施加约束?

  11. 11

    为什么SendwithUs使您定义实例方法而不是类方法?

  12. 12

    是否可以将模型分配给ionSlide或从ionSlideBox获取选定的幻灯片(而不是索引)?

  13. 13

    为字符串中的每个字符(不是字符位置!)分配唯一索引

  14. 14

    为什么在值而不是指针上定义方法?

  15. 15

    Laravel路由的自定义方法而不是资源

  16. 16

    定义为方法签名的委托不是有效的替代

  17. 17

    字符串的未定义方法“ + @”,而不是空格问题

  18. 18

    Angular方法以未定义而不是JSON对象的形式返回

  19. 19

    未定义不是构造函数()方法中的对象

  20. 20

    TypeError'float'对象在数组分配中没有属性'__getitem__'

  21. 21

    如何直接通过方法而不是通过实例将值分配给变量

  22. 22

    robovm可以在堆栈而不是堆上分配本地方法对象吗?

  23. 23

    Python:NoneType对象没有属性__getitem__。但是它不是nonetype

  24. 24

    R:用序号索引的矢量元素的分配顺序是否已明确定义?

  25. 25

    分配groupby多个索引的结果,应用自定义功能,返回到父数据框

  26. 26

    R stat定义x上标签的角度,以为标签文本分配索引值

  27. 27

    Javascript映射显示错误消息(如果未定义而不是破坏)

  28. 28

    Rails的构建方法会破坏对象ID?

  29. 29

    分配自定义URLSessionDelegate是否会覆盖未实现方法的默认行为?

热门标签

归档