2014-02-08 76 views
-1

我正在用Python編寫遊戲。玩家角色和敵人角色是Person的實例。角色可以擁有類別Power的權力。當角色在戰鬥中使用權力時,Power對象需要知道誰擁有權力(爲了應用權力所帶來的效果)。我如何讓Power對象知道其Person是誰?獲取對象的上下文

一個明顯的解決方案是包含一個存儲對Person的引用的創建參數。但是,這有幾個問題;一種是Power的任何方法都可能需要訪問該變量,這會變得很尷尬,因爲我已經將大量參數傳遞給每個方法。

我寧願有一種'聰明'的解決方案,允許對象看起來'看'它在哪裏。有沒有這樣的事情?

回答

2

目前尚不清楚究竟是如何你的對象進行交互,但這裏是一個選擇的一個小例子:

def Power(): 

    def use(self, person): 
     # do whatever 


def Person(): 

    def __init__(self, power): 
     self.power = power 

    def use_power(self): 
     self.power.use(self) 

這提供了在PersonPower的接口,並明確傳遞PersonPower時它是use d。

+0

好吧,這不是我以前發生過的一種方式。非常簡單明瞭,而且結構良好。似乎要走的路... – henrebotha

相關問題