当在包含的项目中使用__iadd__时,为什么我的代码会生成__setitem__错误?

JD弗里亚斯

谁能告诉我为什么这段代码抱怨没有__setitem__容器吗?我以为我只需要__getitem__在容器上获取​​项目然后__iadd__设置值,不知道为什么会这样__setitem__

class Item:
    def __init__(self):
        pass

    def __iadd__(self, value):
        print 'added: ' + value
        return self


class Container:

    def __init__(self):
        self.__items = {
            'foo': Item()
        }

    def __getitem__(self, name):
        return self.__items[name]

if __name__ == '__main__':

    # works!
    con = Container()
    item = con['foo']
    item += 'works!'

    # wtf?
    con['foo'] += "what's going on?"

    # output:

    # added: works!
    # added: what's going on?
    # Traceback (most recent call last):
    #   File "foo.py", line 27, in <module>
    #     con['foo'] += "what's going on?"
    # AttributeError: Container instance has no attribute '__setitem__'
胡安·洛佩斯(Juan Lopes)

基本上,

con['foo'] += "what's going on?"

编译为以下内容:

item = con['foo']
item += "what's going on?"
conf['foo'] = item

您可以看到反编译代码,如下所示:

  2           0 LOAD_GLOBAL              0 (con)
              3 LOAD_CONST               1 ('foo')
              6 DUP_TOPX                 2
              9 BINARY_SUBSCR       
             10 LOAD_CONST               2 ("what's going on?")
             13 INPLACE_ADD         
             14 ROT_THREE           
             15 STORE_SUBSCR        

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当在包含的项目中使用__iadd__时,为什么我的代码会生成__setitem__错误?

来自分类Dev

为什么我的 jdl 文件会生成代码错误的域?

来自分类Dev

为什么当我在gradle项目中使用github action CI时遇到“ ./gradlew:权限被拒绝”错误?

来自分类Dev

当我将嵌套的静态Fragment类声明为private时,为什么会生成错误?

来自分类Dev

当我将嵌套的静态Fragment类声明为private时,为什么会生成错误?

来自分类Dev

为什么每当我输入废话命令时都会生成此python错误消息?

来自分类Dev

我在项目中使用了`sbt-buildinfo`,但是它不会生成BuildInfo.scala文件

来自分类Dev

仅当我在C项目中使用代码时才会出现list.h语法错误

来自分类Dev

为什么collections.Counter不覆盖__iadd__方法?

来自分类Dev

为什么会生成这样的奇怪代码?

来自分类Dev

为什么在我的代码中使用宏会产生错误?

来自分类Dev

我的ReactJs项目中自动生成的这段代码是什么

来自分类Dev

当我将DATE类型的参数传递给Crystal报表时,为什么会生成错误消息“ Invalid Parameter Value”?

来自分类Dev

在ASP.NET MVC项目中使用实体框架代码优先时登录失败错误

来自分类Dev

在Flutter项目中使用Xcode中的Swift Package Manager添加依赖项时生成错误

来自分类Dev

更改列表类型数据时为什么不调用__setitem__?

来自分类Dev

为什么我应该在sbt playframework项目中使用前端插件?

来自分类Dev

为什么我不能在QBS项目中使用控制台输出?

来自分类Dev

为什么我不能在项目中使用@Before注释?“之前无法解析为类型”

来自分类Dev

为什么在 Visual Studio 的 OpenCV 项目中使用 /MT 时仍然需要 dll?

来自分类Dev

在我的项目中使用Django-tables2时出现上下文错误

来自分类Dev

为什么此代码在将框架设置为不可见时会生成错误?

来自分类Dev

尝试在我的项目中使用UIKit但出现错误

来自分类Dev

Spring项目中使用Mybatis时的错误

来自分类Dev

我可以在C ++ OpenGL项目中使用什么UI?

来自分类Dev

为什么我从源代码中包含无效的Unicode收到此错误(但仅在导入matplotlib时)

来自分类Dev

在PHP中,当类不存在时,为什么\ Foo \ Bar :: class不会生成错误?

来自分类Dev

当PDO告诉我们不要这样做时,为什么会生成警告?

来自分类Dev

为什么在乘法中使用long int会生成一个奇数?

Related 相关文章

  1. 1

    当在包含的项目中使用__iadd__时,为什么我的代码会生成__setitem__错误?

  2. 2

    为什么我的 jdl 文件会生成代码错误的域?

  3. 3

    为什么当我在gradle项目中使用github action CI时遇到“ ./gradlew:权限被拒绝”错误?

  4. 4

    当我将嵌套的静态Fragment类声明为private时,为什么会生成错误?

  5. 5

    当我将嵌套的静态Fragment类声明为private时,为什么会生成错误?

  6. 6

    为什么每当我输入废话命令时都会生成此python错误消息?

  7. 7

    我在项目中使用了`sbt-buildinfo`,但是它不会生成BuildInfo.scala文件

  8. 8

    仅当我在C项目中使用代码时才会出现list.h语法错误

  9. 9

    为什么collections.Counter不覆盖__iadd__方法?

  10. 10

    为什么会生成这样的奇怪代码?

  11. 11

    为什么在我的代码中使用宏会产生错误?

  12. 12

    我的ReactJs项目中自动生成的这段代码是什么

  13. 13

    当我将DATE类型的参数传递给Crystal报表时,为什么会生成错误消息“ Invalid Parameter Value”?

  14. 14

    在ASP.NET MVC项目中使用实体框架代码优先时登录失败错误

  15. 15

    在Flutter项目中使用Xcode中的Swift Package Manager添加依赖项时生成错误

  16. 16

    更改列表类型数据时为什么不调用__setitem__?

  17. 17

    为什么我应该在sbt playframework项目中使用前端插件?

  18. 18

    为什么我不能在QBS项目中使用控制台输出?

  19. 19

    为什么我不能在项目中使用@Before注释?“之前无法解析为类型”

  20. 20

    为什么在 Visual Studio 的 OpenCV 项目中使用 /MT 时仍然需要 dll?

  21. 21

    在我的项目中使用Django-tables2时出现上下文错误

  22. 22

    为什么此代码在将框架设置为不可见时会生成错误?

  23. 23

    尝试在我的项目中使用UIKit但出现错误

  24. 24

    Spring项目中使用Mybatis时的错误

  25. 25

    我可以在C ++ OpenGL项目中使用什么UI?

  26. 26

    为什么我从源代码中包含无效的Unicode收到此错误(但仅在导入matplotlib时)

  27. 27

    在PHP中,当类不存在时,为什么\ Foo \ Bar :: class不会生成错误?

  28. 28

    当PDO告诉我们不要这样做时,为什么会生成警告?

  29. 29

    为什么在乘法中使用long int会生成一个奇数?

热门标签

归档