我有一个名为Mobilesuits的类,该类的每个实例都有一个名为坐标的属性,该属性由它的网格坐标组成,它位于一个列表(x,y,z)中。
我试图制作一种雷达方法来检测给定车辆与其他车辆有多近,但无法找到同时引用每个物体坐标的方法。在Python中有什么简单的方法可以做到这一点吗?我不想维护所有车辆的列表,每次我想执行全局更改时,都要使用for循环遍历整个列表,但这是我唯一能想到的方法。
发布于 2014-01-04 03:43:01
在类级别列表中保存对每个实例的引用。国际海事组织,这并不是很难维持,也不是一个全球性的名单。
class Mobilesuits:
instances = []
def __init__(self):
Mobilesuits.instances.append(self)
显然,在__init__
中添加您需要的任何其他内容。如果您从类外部查看Mobilesuits.instances
,您将得到它的实例列表。
如果您真的不想保留一个列表,那么您可以使用gc做一些有问题的事情(老实说,要知道它有多安全):
import gc
mobile_suits = [o for o in gc.get_objects() if isinstance(o, Mobilesuits)]
但说真的,列个单子
发布于 2014-01-04 03:44:34
我不想保留一份名单
这就是你要做的,而且无论如何你都要使用循环。您实际上是在要求语言自动为您创建一个列表。为什么要这样?与您可能预期的相反,您几乎总是不需要或希望得到一个类的每个实例的列表。事实上,这完全有可能,你甚至不想在你的当前程序(无论你是否意识到这一点)。在实践中,有各种可能的原因,在实践中,您可能希望创建不受“常规”处理约束的实例。
https://stackoverflow.com/questions/20916549
复制相似问题