Python 当我给出一个方法作为参数时,属性就消失了
我在寻找答案,但没有人适合我的问题。。。 我试着制作一个计时器,它应该每n次调用一个给定的函数,但它不起作用,当我调试我的对象时,应该存储要调用的函数的属性Python 当我给出一个方法作为参数时,属性就消失了,python,methods,Python,Methods,我在寻找答案,但没有人适合我的问题。。。 我试着制作一个计时器,它应该每n次调用一个给定的函数,但它不起作用,当我调试我的对象时,应该存储要调用的函数的属性callback\u function就消失了 代码如下: import pygame class Timer: def __init__(self, time, callback_function, repeat=False, how_many=0, infinite=False, *args,
callback\u function
就消失了
代码如下:
import pygame
class Timer:
def __init__(self, time, callback_function, repeat=False, how_many=0,
infinite=False, *args, **kwargs):
self.now = pygame.time.get_ticks()
self.time = time
self.callback_function = callback_function
self.repeat = repeat
self.how_many = how_many
self.infinite = infinite
self.args = args
self.kwargs = kwargs
self.active = True
def update(self):
if pygame.time.get_ticks() - self.now >= self.time and self.active:
self.callback_function(self.args, self.kwargs)
if((self.how_many == 0 and not self.infinite) or
self.repeat == False):
self.active = False
return False
elif not self.infinite:
self.how_many -= 1
self.now = pygame.time.get_ticks()
return True
更多代码:
import pygame
from api.ActorSprite import ActorSprite
from api.Timer import Timer
class ActorTest(ActorSprite):
def __init__(self):
super().__init__(pygame.image.load("assets/mario.jpg").convert())
self.add_timer(timer = Timer(2000, self.print_test,repeat=True,how_many=2))
def draw(self, screen):
super().draw(screen)
self.update_timers()
def print_test(self, *args, **kwargs):
print("Hello World!")
没有错误消息,只是没有调用函数print\u test
。但是当我不使用超类ActorTest
来管理计时器时,它就工作了……我不明白
以下是我的调试器的屏幕截图:
我不确定这是否真的是您的问题的原因,而是:
你应该简单地写
self.callback_function = callback_function
好的,很抱歉,这只是我的调试器的一个bug,问题不在那里。现在很好用,谢谢 “消失”…..?代码不是一个完整的示例。请编辑问题并包含您看到的完整错误消息,好吗?您在问题中发布的代码是否与编辑器或IDE中的代码完全相同?我想update
函数必须再缩进一级,但我不确定这是否只是StackOverflow编辑器的问题。我这样写的,并认为错误可能来自那里,但没有。
self.callback_function = callback_function