我在Ubuntu13.04上使用Python2.7。我正在构建一系列计划任务,以便将一些数据上传到第三方API。我试着用一种通用的方式来构建任务,这样我们以后可以很容易地添加更多的任务。在这样做的时候,我使用了一些继承技术,但这些技术并没有按照我预期的方式工作。我认为MRO是非常直接的,但是我一定是做错了什么,因为我在尝试初始化任务时得到了global name 'UpdateBase' is not defined
。在
下面是我使用的继承结构。在
class UpdateBase(PeriodicTask):
def __init__(self, table_type=None, update_type=constants.UPDATE_REALTIME,
cache_time=constants.CACHE_TIME_UPDATE):
super(UpdateBase, self).__init__()
self.table_type = table_type
self.update_type = update_type
self.cache_time = cache_time
self.filename = '{}-{}.{}'.format(
table_type, datetime.datetime.now(), self.update_type)
self.old_files = '{}-*'.format(table_type)
self.file_path = os.path.join(
constants.UPDATE_FILE_PATH, self.filename)
class UpdateAffiliates(UpdateBase):
def __init__(self, **kwargs):
super(UpdateAffiliates, self).__init__(
table_type=constants.AFFILIATES, **kwargs)
class OverlapAffiliates(UpdateAffiliates):
def __init__(self, **kwargs):
super(OverlapAffiliates, self).__init__(
update_type=constants.UPDATE_OVERLAP,
cache_time=constants.UPDATE_OVERLAP, **kwargs)
关于我为什么会出错有什么建议吗?在
编辑1:
似乎是其他原因造成了这个NameError
。我已经建立了几个层次结构来测试这个MRO。我试过了所有我能想到的方法,一切都很好。如果有人能想到什么我可以检查,更改或包括帮助我将不胜感激。在
测试代码的一个示例:
^{pr2}$
我能够解决我的问题,不再使用
__init__()
方法进行初始化。相反,我使用了一个基setup_info()
方法。我在基中引发一个NotImplementedError
,只在每个子级中编写设置。没什么大不了的,但没那么优雅。:)我还是想知道这个问题的根本原因是什么。我是从芹菜遗传的。没什么特别的。在
相关问题 更多 >
编程相关推荐