объекты таймера (python) с аргументами - PullRequest
0 голосов
/ 16 апреля 2011

Как передать аргументы между def с в class с помощью объекта таймера?

def onrepeat(self,user, arg):
    args = arg.split()
    messagearg = args[0]
    colorarg = args[1]
    if colorarg == "black":
        color = "&0"
    if colorarg == "dark blue" or "darkblue":
        color = "&1"
    if colorarg == "dark green" or "darkgreen":
        color = "&2"
    if colorarg == "dark teal" or "darkteal":
        color = "&3"
    if colorarg == "dark red" or "darkred":
        color = "&4"
    if colorarg == "purple":
        color = "&5"
    if colorarg == "gold":
        color = "&6"
    if colorarg == "gray":
        color = "&7"
    if colorarg == "dark gray" or "darkgrey" or "dark grey" or "darkgrey":
        color = "&8"
    if colorarg == "blue":
        color = "&9"
    if colorarg == "bright green" or "brightgreen":
        color = "&a"
    if colorarg == "teal":
        color = "&b"
    if colorarg == "red":
        color = "&c"
    if colorarg == "pink":
        color = "&d"
    if colorarg == "yellow":
        color = "&e"
    if colorarg == "white":
        color = "&f"
    if colorarg == "":
        color = "&f"
    self.timerobj = Timer(3.0, self.repeat2)
    self.timerobj.start()

def repeat2(self,messagearg,color):
    self.bot.sendMessage(color + messagearg)

Это даст мне сообщение об ошибке:

repeat2 needs 3 arguments while only 2 are given.

Дляисправить это я меняю

self.timerobj = Timer(3.0, self.repeat2) 

на

self.timerobj = Timer(3.0, self.repeat2(messagearg,color))

но это тоже не работает!

1 Ответ

0 голосов
/ 16 апреля 2011

Таймер имеет следующую подпись

class threading.Timer(interval, function, args=[], kwargs={})

Обратите внимание, что он принимает args и kwargs.Таким образом, вы отправляете свои аргументы в функцию Timer, просто упоминая их.Попробуйте это:

Timer(3.0, self.repeat2,messagearg,color)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...