Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将当前对象传递给python ApsScheduler方法_Python_Oop_Arguments_Apscheduler - Fatal编程技术网

将当前对象传递给python ApsScheduler方法

将当前对象传递给python ApsScheduler方法,python,oop,arguments,apscheduler,Python,Oop,Arguments,Apscheduler,我试着在课堂上每X小时安排一份工作。但是,我不确定如何将当前上下文传递给该方法,因为它需要“self”。我知道如果采用DoItCron风格,我可以使用args参数列表,但这也不起作用。帮忙 class MyClass(object): @settings.scheduler.interval_schedule(hours=2) def post(self, first_argument=None): # do stuff self.cleanup(

我试着在课堂上每X小时安排一份工作。但是,我不确定如何将当前上下文传递给该方法,因为它需要“self”。我知道如果采用DoItCron风格,我可以使用args参数列表,但这也不起作用。帮忙

class MyClass(object):
    @settings.scheduler.interval_schedule(hours=2)
    def post(self, first_argument=None):
        # do stuff
        self.cleanup()
导致

Traceback (most recent call last):
      File "/usr/local/lib/python2.7/dist-packages/apscheduler/scheduler.py", line 510, in _run_job
        retval = job.func(*job.args, **job.kwargs)
    TypeError: post() takes at least 1 argument (0 given)
谢谢。

您可以走这边:

class MyClass(object):
    def post(self, first_argument=None):
        # do stuff
        self.cleanup()


@settings.scheduler.interval_schedule(hours=2)
def my_job(first_argument=None):
    my_class = MyClass()
    my_class.post(first_argument)
my_class = MyClass()
scheduler.add_job(my_class.post, 'interval', {'seconds': 3}, kwargs={'first_argument': first_argument})
或者,通过这种方式:

class MyClass(object):
    def post(self, first_argument=None):
        # do stuff
        self.cleanup()


@settings.scheduler.interval_schedule(hours=2)
def my_job(first_argument=None):
    my_class = MyClass()
    my_class.post(first_argument)
my_class = MyClass()
scheduler.add_job(my_class.post, 'interval', {'seconds': 3}, kwargs={'first_argument': first_argument})