如何在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”参数传递给构造函数吗?