【发布时间】:2021-06-24 06:11:09
【问题描述】:
我目前正在使用 3D 软件 (blender 3d) 的 API 我们可以在其中创建一个名为“VertexGroup”的子类(它基本上用于存储顶点权重信息)。
我在我的 python 脚本中为这些类实例添加功能,用户可以通过一些数学算法生成程序顶点组。唯一的问题是我无法正确识别实例。在目前的情况下,我的脚本依赖于用户可访问的内置“名称”字符串 attr。这意味着如果用户更改此属性,我将失去对实例的跟踪。
所以我的问题是,如何识别这个类的实例?有什么方法可以“标记”该类以便以后识别它吗?
以下是我已经尝试过但没有成功的几件事:
- 不幸的是,我没有使用此类中的另一个 attr 来进行识别。
- 通过 API 中提供的内置属性管理将我自己的属性添加到该类中,不幸的是,此特定情况不支持自定义属性,因此我需要找到一种更 Python 的方式。
- 向类添加新属性,不幸的是该类没有任何
__dict__方法它只有__doc____module____slots__并且都是只读的。 - 使用 id() 或 hash() 是我需要的吗?不幸的是,在这种情况下它不起作用,因为软件会在内存中动态地重新分配这个对象,所以这些标识符可能会在对象生命周期内发生变化。
- 创建 VertexGroup 的子类,遗憾的是,软件 API 不支持它。
【问题讨论】:
-
“我试过这个:”列表的最后几个项目符号没有正确显示。
-
你有什么我可能会忽略的建议吗?
-
如果你不能添加属性,或者属性可以由用户更改,并且id和内存位置是可变的,我也没有想法了。
-
如何在你的类中实现 comparison 方法,例如 == 和 (如果有意义的话),它们分别是
__eq__、__lt__和__gt__,与那些您的班级将可以根据您想要的任何标准进行比较和排序
标签: python class object uniqueidentifier identification