如何将“标签”添加到 python 类实例以进行识别?

问题描述

我目前正在使用 3D 软件 (blender 3d) 的 API 在这里我们可以创建一个名为“VertexGroup”的子类(主要用于存储顶点权重信息)。

enter image description here

enter image description here

我正在我的 python 脚本中为这些类实例添加功能用户可以在其中通过一些数学算法生成程序顶点组。唯一的问题是我无法正确识别实例。在目前的情况下,我的脚本依赖于用户可以访问的内置“名称”字符串属性。这意味着如果用户更改此属性,我将失去对实例的跟踪。

所以我的问题如下,如何识别此类的实例?有什么方法可以“标记”班级以便以后识别?

以下是我尝试过但没有成功的几件事:

  • 不幸的是,使用此类中的另一个 attr,我无法将其用于识别目的。
  • 通过 API 中提供的内置属性管理将我自己的属性添加到该类中,不幸的是,此特定情况不支持自定义属性,因此我需要找到一种更 Pythonic 的方式。
  • 向类添加属性,不幸的是该类没有任何 __dict__ 方法,它只有 __doc__ __module__ __slots__ 并且都是只读的。
  • 使用 id() 或 hash() 是我需要的,对吗?不幸的是,在这种情况下它不起作用,因为软件会在内存中动态地重新分配此对象,因此这些标识符可能会在对象生命周期内发生变化。
  • 创建 VertexGroup 的子类,不幸的是,它不受软件 API 支持

解决方法

获取对象的类 obj

type(obj)

要检查对象 obj 是否与类 cls 兼容:

isinstance(obj,cls)