2014-02-08 2 views
-1

나는 파이썬으로 게임을 만들고있다. 플레이어 캐릭터와 적 캐릭터는 Person의 인스턴스입니다. 캐릭터의 능력은 클래스 Power입니다. 캐릭터가 전투에서 힘을 사용하는 경우, Power 오브젝트는 누가 힘을 소유하고 있는지 알 필요가 있습니다 (힘이 미치는 영향을 적용하기 위해). Power 개체에 누가 Person인지 알 수있는 방법은 무엇입니까?객체의 문맥을 얻는다.

하나의 분명한 해결책은 Person에 대한 참조를 저장하는 생성 인수를 포함하는 것입니다. 그러나 여기에는 몇 가지 문제가 있습니다. 하나는 Power의 메소드가 해당 변수에 대한 액세스를 필요로 할 것이기 때문에 모든 메소드에 인수를 이미 전달하고 있기 때문에 어색해집니다.

나는 개체가 어디에 있는지보기 위해 '위로 보게'하는 일종의 '영리한'솔루션을 원합니다. 이게 뭔가 있니?

답변

2

당신의 객체가 상호 작용하는 방법을 정확하게 명확하지 않다, 그러나 여기에서 하나 개의 옵션의 최소한의 예입니다 : 이것은 Person에서 Power에 인터페이스를 제공

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) 

하고 Power 때 명시 적으로 Person 전달 그것은 use d입니다.

+0

좋아, 그게 내게 일어난 방법이 아니야. 매우 간단하고 명확하지만 잘 구조화되어 있습니다. 가야 할 길 같아. – henrebotha