Python - 继承 - 未调用的构造函数

时间:2014-06-27 12:18:58

标签: python django python-2.7

这是我的班级结构:

class MyMixin(object):
    def __init__(self, **kwargs):
        super(MyMixin, self).__init__(**kwargs)

class MyBaseView(MyMixin, TemplateView):
    def __init__(self, **kwargs):
        print 'MyBaseView init'
        super(MyBaseView, self).__init__(**kwargs)

class MyCommonView(MyBaseView):
    def __init__(self, **kwargs):
        print 'MyCommonView init'
        super(MyCommonView, self).__init__(**kwargs)

class MyView(MyCommonView):
    def __init__(self, **kwargs):
        print 'MyView init'
        super(MyView, self).__init__(**kwargs)

在urls.py中:

url(r'^some/url/$', MyView.as_view())

此外,每个构造函数中都定义了一些实例变量。我没有在这里写这些,因为我认为它们不相关。

结果...打印MyView和MyCommonView初始化消息,但MyBaseView没有。因此,MyBaseView的构造函数永远不会被调用。我知道构造函数没有被调用,因为我看到有些东西没有被正确初始化,这里的打印只是为了证明它们没有被调用。

为什么呢?可能是什么导致了这个?如何解决?

感谢。

1 个答案:

答案 0 :(得分:0)

好的,这很奇怪,但现在已经解决了。

我的项目中的子模块中有一些这些类。该子模块已从项目中移除到独立应用程序(可通过pip安装在virtualenv中)。我确实在本地安装了它,我确实从修订控制中提取了我的项目的最新版本,修订版本不再包含这个子模块。

长话短说,子模块已被删除,但其目录中仍保留着一些.pyc文件。这些文件已经过时,我的项目由于某种原因使用它们,这就是为什么它没有用。