问题描述
|
我有一个名为Player的类,它将有200-300个此类的实例。此类中有一个称为Move的函数,该函数需要了解地图。
我也有一个名为Map的类,具有1-2个实例。将Map实例输入到Player实例的最佳方法是什么?
我只是问,因为是否在Player初始化时将其馈送到实例,以便我可以通过self.map访问该实例-这样会不会创建数百个Map实例副本(每个Player实例一个)?
就我所知,这可能是执行此操作的标准方式,但我a不安地认为这样做不合适。
谢谢
解决方法
如果您在初始时将
Map
传递给ѭ1this,则仅传递参考,而不是副本。您不会以这种方式创建ѭ0的冗余实例,这是做到这一点的最佳方法。
, Python中没有任何内容被隐式复制。每当您执行x = y
时,无论是函数调用还是变量/元素/属性赋值,x
和y
都将引用同一对象。
不过,我发现您的计划有两个陷阱:
地图还会知道玩家吗?如果是这样,您手上将有很多循环引用。只需将地图传递给move()
即可。
让地图本身或其他一些丰富的“游戏逻辑”类处理实际的运动似乎更合适。 (不过,我不是游戏开发者;我的直觉是,地图上的任何东西都不应伸到自身外部并四处走动。)