如何在Python中正确地将一个函数传递给另一个函数
我试图为从如何在Python中正确地将一个函数传递给另一个函数,python,Python,我试图为从bgmages创建的每个实例分配一个单独的函数,以便在调用instance.collisiontext时调用该函数。我觉得我做错了什么。如果您在构建中向下看,您可以看到一个示例,其中我创建了一个实例,并将一个函数分配给collide text collisiontext方法的全部要点是调用分配给collistedText的函数(对于每个实例,该函数将是不同的函数) 我做错了什么 另外,在向实例slum分配函数时,是否需要在“slumnotice”之后保留“()” class BgIma
bgmages
创建的每个实例分配一个单独的函数,以便在调用instance.collisiontext
时调用该函数。我觉得我做错了什么。如果您在构建中向下看,您可以看到一个示例,其中我创建了一个实例,并将一个函数分配给collide text
collisiontext
方法的全部要点是调用分配给collistedText
的函数(对于每个实例,该函数将是不同的函数)
我做错了什么
另外,在向实例slum分配函数时,是否需要在“slumnotice”之后保留“()”
class BgImages(ButtonBehavior, Image):
def __init__(self, **kwargs):
super(Npcs, self).__init__(**kwargs)
self.collidetext=''
def collisiontext(self,**kwargs):
global collidetext
return 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)
elif keycode[1] == 'up':
for i in listofwidgets:
if i.collide_point(self.x,self.top):
self.y -=1
i.collisiontext()
class gameApp(App):
def build(self):
slum=BgImages(source='slum.png', collidetext=slumnotice())
listofwidgets=[]
listofwidgets.append(slum)
我做错了什么
相当多。如果我纠正它,你知道我之后做了什么,事情会变得更容易:
class BgImages(ButtonBehavior, Image):
def __init__(self, **kwargs):
self.collidetext = kwargs['collidetext']
del kwargs['collidetext']
super(BgImages, self).__init__(**kwargs)
def collisiontext(self):
return self.collidetext()
另外,在向实例slum分配函数时,是否需要在“slumnotice”之后保留“()”
class BgImages(ButtonBehavior, Image):
def __init__(self, **kwargs):
super(Npcs, self).__init__(**kwargs)
self.collidetext=''
def collisiontext(self,**kwargs):
global collidetext
return 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)
elif keycode[1] == 'up':
for i in listofwidgets:
if i.collide_point(self.x,self.top):
self.y -=1
i.collisiontext()
class gameApp(App):
def build(self):
slum=BgImages(source='slum.png', collidetext=slumnotice())
listofwidgets=[]
listofwidgets.append(slum)
这将取决于您是想使用
slumnotice
本身还是slumnotice()
的返回值。我不确定您对kwargs['CollizeText'做了什么。它是一本字典。我访问并变异了它。为什么?不管怎样,这给了我一个错误,'KeyError:'collidetext''我能让'collidetext'成为我分配给它的任何函数的占位符吗(而不必删除东西)?你真的要把一个“collidetext”参数传递给构造函数吗?