如何同时引用所有类实例?

时间:2014-01-04 03:40:04

标签: python

我有一个名为Mobilesuits的类,该类的每个实例都有一个名为coordinates的属性,它由网格坐标组成,它们位于列表中(x,y,z)。

我正在尝试制作一种雷达方法,该方法可以检测给定车辆与其他车辆的接近程度,但无法找到同时参考每个物体坐标的方法。有没有一种简单的方法在Python中执行此操作?我不想维护所有车辆的列表,每次我想要执行全局更改时都会通过for循环遍历整个列表,但这是我能想到的唯一方法。

2 个答案:

答案 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)

  

我不想要维护列表

这就是你的意图;无论如何你必须使用循环。您有效地要求语言自动为您创建列表。好吧,为什么会这样呢?与您可能期望的相反,您几乎总是需要或想要一个已创建的类的每个单个实例的列表。事实上,完全可能是你甚至不希望你的当前程序(无论你是否意识到)。在实践中,有多种可能的原因可能是您为什么要创建不受“常规”处理的实例。