在条件语句中检查对象类型的正确方法是什么 - python

左下角

在条件语句中检查对象类型的正确方法是什么?

编辑:看来我误诊了这个问题。我的条件语句没有触发,因为 json.dumps 代码没有像我想象的那样工作。尽管错误消息说的o.__class__.nameint64,但在引发错误之前它实际上从未具有该值(我通过逐步调试进行了检查)。如何工作的,我不太清楚,这是另一天的主题。我将在下面回答这个问题。

我可以按照以下 Lenik 的建议解决我遇到的问题。

背景:

执行时

from json import dumps
json.dumps(vars(my_object))

我收到一个错误

File "C:\ProgramData\Anaconda3\lib\json\encoder.py", line 180, in 
  default    o.__class__.__name__)
TypeError: Object of type 'int64' is not JSON serializable

json.dumps在 python 中使用时出错,在运行代码后,我使用该vars语句将某些对象转换为字典。

我得出结论,在对象的某个地方我使用的是 numpyint64而不是标准的 python int,这导致了错误。

问题是 my_object 有很多层和地方可以看。

所以我认为聪明的做法是在第 180 行放置一个条件断点(我可以在 PyCharm 中做到这一点),C:\ProgramData\Anaconda3\lib\json\encoder.py条件是

 o.__class__.__name__ == "int64"

然后我可以在调试模式下运行代码,并希望找到有问题的层/变量。

我已经尝试过,以及在我的dumps调用和调用堆栈中的最低点之间的几个点调用堆栈中,但我的断点从未被触发。

因此,我怀疑我没有使用正确的条件语句来检查正在序列化的对象的名称......?

因此我的问题是:在条件语句中检查对象类型的正确方法是什么?

这是导致问题的对象:

[  
   {  
      "combat_id":null,
      "units":[  
         {  
            "unit_id":7,
            "engagements":{  
               "front":[  
                  8,
                  -20,
                  -20
               ],
               "left":[  

               ],
               "right":[  

               ],
               "rear":[  

               ]
            }
         },
         {  
            "unit_id":8,
            "engagements":{  
               "front":[  
                  7,
                  -20,
                  80
               ],
               "left":[  

               ],
               "right":[  

               ],
               "rear":[  

               ]
            }
         }
      ],
      "combat_log":{  
         "combat_id":null,
         "full_log":[  
            [  
               {  
                  "initiative_step":"asf",
                  "_load_printables":true,
                  "striker_names":[  
                     "Pieka's Spear Boys",
                     "Coert's Pennyless Pokers"
                  ],
                  "striker_descs":[  
                     "High Elf Core Infantry",
                     "High Elf Core Infantry"
                  ],
                  "striker_players":[  
                     "Pieka",
                     "Coert"
                  ],
                  "striker_qtys":[  
                     25,
                     21
                  ],
                  "target_names":[  
                     "Coert's Pennyless Pokers",
                     "Pieka's Spear Boys"
                  ],
                  "target_descs":[  
                     "High Elf Core Infantry",
                     "High Elf Core Infantry"
                  ],
                  "target_players":[  
                     "Coert",
                     "Pieka"
                  ],
                  "target_qtys":[  
                     21,
                     25
                  ],
                  "attack_types":[  
                     "melee",
                     "melee"
                  ],
                  "attacks":[  
                     20,
                     21
                  ],
                  "to_hit_dcs":[  
                     4,
                     4
                  ],
                  "hits":[  
                     10,
                     10
                  ],
                  "to_wound_dcs":[  
                     4,
                     4
                  ],
                  "savable_wounds":[  
                     5,
                     5
                  ],
                  "armor_dcs":[  
                     5,
                     5
                  ],
                  "armor_saves":[  
                     1,
                     1
                  ],
                  "ward_dcs":[  
                     7,
                     7
                  ],
                  "ward_saves":[  
                     0,
                     0
                  ],
                  "unsaved_wounds":[  
                     4,
                     4
                  ],
                  "remaining_wounds":[  
                     17,
                     21
                  ],
                  "input":[  
                     ""
                  ],
                  "printables":[  
                     "<dominus_core.objects.sub_classes.combat.init_step_log.PrintableEntry object at 0x000000000EA72B70>",
                     "<dominus_core.objects.sub_classes.combat.init_step_log.PrintableEntry object at 0x000000000EA92C88>"
                  ],
                  "printable_strings":[  

                  ],
                  "longest_name":1,
                  "_longest_name":28
               }
            ]
         ],
         "easy_log":[  

         ]
      }
   }
]
莱尼克

您可以为标准 json 序列化程序无法识别的对象创建序列化程序:

def my_json_serializer(obj):
    if isinstance(obj, int64):
        return int(obj)    # or whatever other conversion you'd prefer
    raise TypeError ("Type %s not serializable" % type(obj))

然后像这样使用它:

json.dumps( vars(my_object), default=my_json_serializer)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 Python 的 if 语句中分组条件的正确语法是什么?

来自分类Dev

python中的最佳方法是什么:if语句中的多个OR或IN?

来自分类Dev

“。”的用途是什么 在python import语句中

来自分类Dev

python的def语句中'->'的用法是什么

来自分类Dev

Python 3.3.2检查对象是否为文件类型

来自分类Dev

在python中构造类,对象的正确方法是什么

来自分类Dev

Selenium python:webdriverwait.until语句中的“ lambda”是什么

来自分类Dev

在 Python 中,return 语句中尾随逗号的目的是什么?

来自分类Dev

python中的JSON对象的类型是什么?

来自分类Dev

Python的代码对象是什么类型?

来自分类Dev

在Java 8中检查链接语句中的null或检查异常的正确方法是什么?

来自分类Dev

用Python重新编写此嵌套IF语句的正确方法是什么

来自分类Dev

在Python中使用多重处理,导入语句的正确方法是什么?

来自分类常见问题

确定对象在Python中是否是类似字节的对象的正确方法是什么?

来自分类Dev

如何检查对象是否为str类型的列表-Python

来自分类Dev

Cython中的枚举是检查对象的最佳方法是什么?

来自分类Dev

如果对象在 angular 2 模板中未定义,那么检查对象属性的正确方法是什么?

来自分类Dev

在python中将“或”与if条件一起使用的正确方法是什么

来自分类Dev

在python中使用类型提示注释路径的正确方法是什么?

来自分类Dev

在一个if语句中使用多个OR条件是否正确,替代方法是什么?

来自分类Dev

在Python中连接多个布尔检查的正确语法是什么?

来自分类Dev

在python中将容器添加到预先存在的对象的简单但正确的方法是什么?

来自分类Dev

防止Python在不满足条件的if语句中检查语法错误

来自分类Dev

python多条件if语句中的'AND'vs'and'

来自分类Dev

在 Python Try 语句中测试多个条件

来自分类Dev

Python:告诉我的IDE对象是什么类型

来自分类Dev

在python中实例化类的对象的类型是什么?

来自分类Dev

Python列表理解时如何在条件语句中什么都不做?

来自分类Dev

检查对象是否可在python中排序?

Related 相关文章

  1. 1

    在 Python 的 if 语句中分组条件的正确语法是什么?

  2. 2

    python中的最佳方法是什么:if语句中的多个OR或IN?

  3. 3

    “。”的用途是什么 在python import语句中

  4. 4

    python的def语句中'->'的用法是什么

  5. 5

    Python 3.3.2检查对象是否为文件类型

  6. 6

    在python中构造类,对象的正确方法是什么

  7. 7

    Selenium python:webdriverwait.until语句中的“ lambda”是什么

  8. 8

    在 Python 中,return 语句中尾随逗号的目的是什么?

  9. 9

    python中的JSON对象的类型是什么?

  10. 10

    Python的代码对象是什么类型?

  11. 11

    在Java 8中检查链接语句中的null或检查异常的正确方法是什么?

  12. 12

    用Python重新编写此嵌套IF语句的正确方法是什么

  13. 13

    在Python中使用多重处理,导入语句的正确方法是什么?

  14. 14

    确定对象在Python中是否是类似字节的对象的正确方法是什么?

  15. 15

    如何检查对象是否为str类型的列表-Python

  16. 16

    Cython中的枚举是检查对象的最佳方法是什么?

  17. 17

    如果对象在 angular 2 模板中未定义,那么检查对象属性的正确方法是什么?

  18. 18

    在python中将“或”与if条件一起使用的正确方法是什么

  19. 19

    在python中使用类型提示注释路径的正确方法是什么?

  20. 20

    在一个if语句中使用多个OR条件是否正确,替代方法是什么?

  21. 21

    在Python中连接多个布尔检查的正确语法是什么?

  22. 22

    在python中将容器添加到预先存在的对象的简单但正确的方法是什么?

  23. 23

    防止Python在不满足条件的if语句中检查语法错误

  24. 24

    python多条件if语句中的'AND'vs'and'

  25. 25

    在 Python Try 语句中测试多个条件

  26. 26

    Python:告诉我的IDE对象是什么类型

  27. 27

    在python中实例化类的对象的类型是什么?

  28. 28

    Python列表理解时如何在条件语句中什么都不做?

  29. 29

    检查对象是否可在python中排序?

热门标签

归档