芹菜类

2024-05-14 09:03:50 发布

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

我正在编写许多非常相似的任务,并且想知道如何更好地将Task子类化以减少样板文件。因为一个任务只安装一次,所以你不能像我下面展示的那样把它放在__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__是正确的,那么我应该在抽象类中的哪里设置类。我可以很容易地定义一系列函数,如果我想做的只是考虑一些东西,但是一些(很多)样板文件取决于对象id


Tags: 文件runselfidtaskdataobjectinit

热门问题