0

我觉得我正在接近这个错误,但我不确定最好的方法。

我需要根据谁将接收数据(来自大约 100 个收件人的列表)以不同的方式处理数据。每个收件人都有很多独特的处理需要完成,例如,我需要能够为每个目的地输出可读的数据,生成目的地唯一的链接等。

我的第一个想法是使用继承为每种类型的接收者将处理函数封装在一个类中。我认为这是干净和pythonic。

然而,有时处理需要采取不同的行动,这需要在代码库之外进行控制。例如,我可能需要为一位收件人关闭链接生成。我的想法是在我的站点的数据库中有一个表格,每个收件人作为一行,他们当前的标志作为列。

问题是 - 我如何将处理类与信息行对应?我不喜欢将类名转储到 SQL 列中的想法。

抱歉,如果不清楚,因为英语不是我的母语。

4

1 回答 1

0

好吧,当您说“我正在接近这个错误”时,我认为您是对的。

我也认为您对标志的看法是正确的:它们应该以某种方式与用户一起存储(通过外键,如果许多用户共享相似的配置,或者甚至是一对一的关系,如果它们具有完全不同的标志值)。

但是,您不需要为单独的标志集设置单独的类。您可以使用这样的单个类来定义它:

class UserReport(object):
    def __init__(self, flags):
        self._flags = flags

    def prepare(self):
        if self._flags.get('generate_links'):
            self.generate_links()
        self.build_content()

    def send(self):
        if self._flags.get('send_report'):
            # ... send report here ...
            return True
        else:
            return False

这是一个非常粗略的示例,但应该向您展示如何使用一个类处理几种不同的情况 - 只允许它在实例化期间(或以后)接收一些参数(标志)。

于 2013-07-12T02:14:55.367 回答