2014-04-27 2 views
1

저는 여전히 파이썬을 배우고 있으며 새로운 인스턴스를 만드는 것에 대해서는 약간 혼란 스럽습니다. 이 예제의 맨 아래에서 BgImages의 인스턴스를 만듭니다. 나는 문자열을 할당하고 싶었 기 때문에 collidetext = "this is a test"를 추가하고 BgImages 생성자에 들어가서 단순히 self.collidetext = "임의의 문자열"을 넣었습니다. 문제는 내가 slum.collisiontext를 인쇄 할 때, "이것은 테스트입니다"가 아니라 "임의의 문자열"을 계속 출력한다는 것입니다.작성 중에 인스턴스에 속성을 지정하는 방법은 무엇입니까?

나는 다른 사람들로부터 도움을 요청했으며, 이제는 그 사람들과 관련이 있다는 것을 이해하고 있습니다. ** kwargs는 내가하려는 것을 허용하지 않을 것입니다. 누군가가 내가 성취하려는 것을 달성 할 수있는 방법과 내가하는 일이 왜 (평신도의 관점에서) 효과가 없는지를 말할 수 있기를 바랬다.

class BgImages(ButtonBehavior, Image): 
    def __init__(self, **kwargs): 
     super(Npcs, self).__init__(**kwargs) 
     self.collidetext="random string" 

    def collisiontext(self,**kwargs): 
     return self.collidetext() 

class MainCharacter(Image): 

    def __init__(self, **kwargs): 
     super(MainCharacter, self).__init__(**kwargs) 
     self._keyboard = Window.request_keyboard(None, self) 
     if not self._keyboard: 
      return 
     self._keyboard.bind(on_key_down=self.on_keyboard_down) 
     self._keyboard.bind(on_key_up=self.on_keyboard_up) 



class gameApp(App): 
    def build(self): 
     slum=BgImages(source='slum.png', collidetext="this is a test1") 
     police=BgImages(source='police.png', collidetext="this is a test2") 
     listofwidgets=[] 
     listofwidgets.append(slum) 
     listofwidgets.append(police) 

답변

0

난 당신이 kwargs의 사용에 다소 문제를 혼동 될 수있다 생각합니다. 그러나

def __init__(self, **kwargs): 
    super(Npcs, self).__init__(**kwargs) 
    self.collidetext=kwargs["collidetext"] 

을 일반적으로 당신은 어쩌면이 같은 실제 이름이 매개 변수를 사용합니다 : 어쨌든, 현재 코드에서 당신이 원하는 것을 할 당신은 같은 것을 할 수 있습니다 또한

def __init__(self, source=None, collidetext=None): 
    super(Npcs, self).__init__(source=source) 
    self.collidetext=collidetext 

사용을 def collisiontext(self,**kwargs):은 실제로 kwargs이 무엇인지 확실하지 않으며 패턴을 반복하고 있음을 나타냅니다. 너무 많은 것을 얻으려면 좋은 파이썬 튜토리얼로 시간을 보내길 바란다.

+0

source = None으로 설정하면 모든 이미지가 사라지기 때문에 하단 예제를 사용 했으므로이 부분을 제거했습니다. – david

+0

도움을 주셔서 감사합니다. 그러나 원본이 없으면 작동하지 않는 이유는 알 수 없습니다. = 없음 – david

+0

그렇기 때문에 나는 파이썬 튜토리얼로 시간을 할애 할 것을 제안했다. 예를 들어 [공식 Python 튜토리얼의 4.6 및 4.7 절] (https://docs.python.org/2/tutorial/controlflow.html#defining-functions)에서는 함수 매개 변수에 대해 자세히 설명합니다. –

0

원하는 키워드 인수를 올바르게 전달하고 있지만 대상 클래스에서 사용하고 있지 않습니다.

관련 문제