如何在Python中正确地将一个函数传递给另一个函数

2024-07-04 13:21:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图为从bgImages创建的每个实例分配一个单独的函数,以便在调用instance.collisiontext时,它调用该函数。我觉得我做错了什么。如果在构建中往下看,您可以看到一个示例,其中我创建了一个实例并将一个函数分配给collidetext。你知道吗

collisiontext方法的要点是调用分配给collidetext的函数(对于每个实例,它将是不同的函数)。你知道吗

我做错什么了?你知道吗

另外,在为实例slom分配函数时,是否需要在“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)

Tags: 实例函数selfinitondefkwargsclass
1条回答
网友
1楼 · 发布于 2024-07-04 13:21:11

What am I doing wrong here?

相当多。如果我纠正一下,你就知道我之后做了什么,那就容易多了:

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()

Also, when assigning a function to the instance slum, do I need to keep the '()' after 'slumnotice'?

这将取决于您是想使用slumnotice本身还是slumnotice()的返回值。你知道吗

相关问题 更多 >

    热门问题