我还在学习Python,对创建新实例有点困惑。在这个示例的底部,我创建了一个bgmages实例。我想给它分配一个字符串,所以我添加了collidetext=“this is a test”,然后我进入bgmages构造函数并简单地将self.collidetext=“random string”放进去。问题是当我打印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)
我想你可能会把这个问题和
kwargs
的用法搞混了。但无论如何,要在当前代码中执行所需操作,可以执行以下操作:但是,通常使用实际命名的参数,可能如下所示:
此外,您使用
def collisiontext(self,**kwargs):
表示您不确定kwargs
的用途,您只是在重复这个模式。我建议在深入学习之前花点时间学习一个好的Python教程您正确地传递了所需的关键字参数,但没有在目标类中使用它们
相关问题 更多 >
编程相关推荐