代码之家  ›  专栏  ›  技术社区  ›  drigoSkalWalker

Blender Python对象api:Type方法返回字符串的枚举不是预期的int

  •  0
  • drigoSkalWalker  · 技术社区  · 7 年前

    现在我正在用Python编写一个Blender插件。

    此文档位于 type https://docs.blender.org/api/2.78/bpy.types.Object.html 告诉它正在返回 Enum 类型

    但是 enum str ,一个字符串,其中 int (我是指数字)值?或者是Python看待这些事情的方式?

    如果这是正确的,文档必须说“返回字符串”,而不是枚举。

    1 回复  |  直到 3 年前
        1
  •  0
  •   sambler    7 年前

    虽然这似乎是一个搅拌器的奇怪之处,但根据定义 enumerated type 是一组命名值,在C/C++中,这些值存储为int数据类型,这可能是基于内存使用和性能的决定。在比较它们时,请考虑1972年创建C时可用的速度和内存。python 3。x标准库具有 support for enums

    因此,虽然对象类型是可能值的枚举,但所选值存储为字符串,用于对应C源代码中定义的值集合。

    blenders构建过程的一部分生成用于保存/加载混合文件的源代码,还用于进行python绑定,可以在blenders C源代码中找到相关枚举 here ,第二项中的字符串似乎是python中用于匹配的字符串。如果有兴趣 start here

    您可以在blenders python中找到类似的用法,示例代码 here bpy.props.EnumProperty 其中,每个枚举项是一组多个值。更好的示例可能是使用枚举定义菜单,如所示 this answer .

    operators