我有一个名为Mobilesuits的类,该类的每个实例都有一个名为coordinates的属性,它由网格坐标组成,它们位于列表中(x,y,z)。
我正在尝试制作一种雷达方法,该方法可以检测给定车辆与其他车辆的接近程度,但无法找到同时参考每个物体坐标的方法。有没有一种简单的方法在Python中执行此操作?我不想维护所有车辆的列表,每次我想要执行全局更改时都会通过for循环遍历整个列表,但这是我能想到的唯一方法。
答案 0 :(得分:1)
在类级别列表中保存对每个实例的引用。 IMO并不难维护,也不是全球清单。
class Mobilesuits:
instances = []
def __init__(self):
Mobilesuits.instances.append(self)
显然,您需要添加__init__
所需的任何其他内容。如果你从课外看Mobilesuits.instances
,你会得到一个实例列表。
如果你真的真的不想保留一份清单你可以用gc做一些真正有问题的(老实说,idk有多安全):
import gc
mobile_suits = [o for o in gc.get_objects() if isinstance(o, Mobilesuits)]
但严重的是,只需保留一份清单
答案 1 :(得分:0)
我不想要维护列表
这就是你的意图;无论如何你必须使用循环。您有效地要求语言自动为您创建列表。好吧,为什么会这样呢?与您可能期望的相反,您几乎总是不需要或想要一个已创建的类的每个单个实例的列表。事实上,完全可能是你甚至不希望你的当前程序(无论你是否意识到)。在实践中,有多种可能的原因可能是您为什么要创建不受“常规”处理的实例。