2011-05-28 108 views
0

我有一個類玩家,這個類將有200-300個實例。這個類中有一個功能叫做移動,這個功能需要知道地圖。Python:從類實例中訪問變量的最佳方法?

我也有一個類地圖與1-2個實例。提供地圖玩家實例的最佳方式是什麼?

我只問,因爲如果我將其提供給玩家時的例如初始化,所以我可以訪問通過self.map實例 - 不就是爲每個實例創建數百地圖實例的副本(一個播放器)?

對於我所知道的這可能是這樣做的標準方式,但我有一個嘮叨的感覺,這是不適當的。

感謝

回答

1

如果你通過了MapPlayer在Init這只是傳遞一個參考,而不是一個副本。您不會通過這種方式創建Map的冗餘實例,並且這是實現它的最佳方式。

1

Python中的任何內容都不會被隱式複製。無論何時你做x = y,無論是函數調用還是變量/元素/屬性分配,xy之後都會引用同一個對象。

我看到兩個缺陷與你的計劃,但:

  • 會在地圖也知道球員?如果是這樣,你手上會有很多循環引用。相反,只需將地圖傳遞給move()即可。
  • 讓地圖本身或其他豐富的「遊戲邏輯」類處理實際移動似乎更合適。 (雖然我不是遊戲開發者,但我的直覺只不過是在地圖上的東西不應該到達自身之外並自行移動。)
+0

地圖上的東西可以詢問或告訴地圖來移動它。 – martineau 2011-05-28 09:36:04