TypeError : super() takes at least 1 argument (0 given) [python2]

TypeError : super() takes at least 1 argument (0 given) [python2]


donald chi / 2017-03-10 00:33

音声ファイル作成中...
Audio: Visited: 2714


python 2.7.10で python3から書いたdjangoで動くサイトのプログラムを 実行しようとすると以下のようなエラーがあった。


Error :

class BlogListView(ListView):
    model = MyBlog
    template_name = "blog_list.html"
    def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
=>  TypeError: super() takes at least 1 argument (0 given)

原因:

調べてみたら、Python 3.0からは、DRY原則を守るため、super()の引数が省略できるようになったが、Pyhon2では、そうなっていないことがわかった。

解決方法

解決方法としては、super()に自分が属しているclass名を引数として渡せば良い。私の場合、class名がBlogListViewだったので、

context = super(BlogListView, self).get_context_data(**kwargs)

と引数を追加すれば解決できる。


0

0

Share with: Facebook Twitter Google+ LinkedIn Wechat Email Print

Comments: 0 件

There is no Comment now.

Add Comment

Name:
Email:
Comment: