这是我的班级结构:
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的构造函数永远不会被调用。我知道构造函数没有被调用,因为我看到有些东西没有被正确初始化,这里的打印只是为了证明它们没有被调用。
为什么呢?可能是什么导致了这个?如何解决?
感谢。
答案 0 :(得分:0)
好的,这很奇怪,但现在已经解决了。
我的项目中的子模块中有一些这些类。该子模块已从项目中移除到独立应用程序(可通过pip安装在virtualenv中)。我确实在本地安装了它,我确实从修订控制中提取了我的项目的最新版本,修订版本不再包含这个子模块。
长话短说,子模块已被删除,但其目录中仍保留着一些.pyc文件。这些文件已经过时,我的项目由于某种原因使用它们,这就是为什么它没有用。