我正在编写很多非常相似的任务,并想知道如何更好地继承Task
以减少样板。由于任务只是一次实例化,我不能像{I} __init__
那样把事情放在下面,但是它应该说明这一点。
我想要完成的事情:
class EmailTaskOne(Task):
def run(self, object_id):
email_data = EmailData.objects.get(pk=object_id)
data = self.do_common_stuff(email_data)
self.do_unique_stuff(data)
class EmailTaskTwo(Task):
def run(self, object_id):
email_data = EmailData.objects.get(pk=object_id)
data = self.do_common_stuff(email_data)
self.do_unique_stuff2(data)
# lots more tasks like this
我想要的是:
class BaseEmailTask(Task):
abstract = True
#...Insert Magic Here...
class EmailTaskOne(BaseEmailTask):
def run(self, object_id):
self.do_unique_stuff(self.data)
所以,由于__init__
正好,我在哪里设置抽象类中的类。我可以很容易地定义一堆函数,如果我想做的就是分解出一些东西,但是一些(很多)样板文件取决于object_id。