質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

Python謎のエラー

tsunpoko
tsunpoko

総合スコア16

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

4回答

0リアクション

0クリップ

3065閲覧

投稿2015/08/28 07:13

みんなのPython第3版のアプリケーションを作るというチャプターに乗っていたサンプルコードなのですが、エラーが出てしまいます。
今日ずっと調べていたのですがわからず、進捗が溶けていきます。
何度も確認しているので打ち間違えはないと思います。
教えていただけると助かります。

todoitem.py

Python

#A class to save ToDo's Item. class ToDoItem(object): #Initialization Method def __init__(self, title, description, duedate, addeddate = None): if not addeddate: addeddate = datetime.now() self.title = title self.description = description self.duedate = duedate self.addeddate = addeddate self.finished = False self.finisheddate = None #Finish ToDo def finish(self, date = None): self.finished = True if not date: date = datetime.now() self.finisheddate = date #Debug def __repr__(self): return "<ToDoItem {}, {}>".format(self.title, self.duedate.strftime('%Y/%m/%d %H:%M'))

todocontainer.py

Python

#import module from datetime import datetime, timedelta #A Class To Save List of ToDo class ToDoContainer(object): #Initialization Method def __init__(self): self.todos = [] #return Items of ToDo def __len__(self): return len(self.todos) #ToDo is sorted as DeadLine def sort(self): self.todos.sort(key = lambda x : x.duedate) #!!! def __add__(self, item): self.todos.append(item) self.sort() def __iadd__(self, item): self.__add__(self,item) return self #IndexAccess emulation def __getitem__(self, idx): return self.todos[idx] #eassignment of Index emulation def __setitem__(self, idx, item): self.todos[idx] = item self.sort() #del points Index emulation def __delitem__(self, idx): del self.todos[idx] #return notEnd list of ToDo def get_remaining_todos(self): return [t for t in self.todos if not t.finished]

user@ubuntu~$ python3

from datetime import datetime
from todoitem import ToDoItem
from todocontainer import ToDoContainer

todos = ToDoContainer()
for d in range(19, 0, -1):

. . . td = ToDoItem('title {}'.format(d), datetime(2012, 10, d))
. . . todos += td
. . .
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
TypeError: unsupported operand type(s) for +=: 'ToDoContainer' and 'ToDoItem'

コメントの英語は自分が分かるように書いているので汚いのは気にしないでください。

最後の行の

todos += td

でエラーが出ていると思っているのですが
これは特殊メソッド__add__()で呼び出しているんですよね?
だったらなぜ+=が通らないのかが分からないです。
Pythonのバージョンなどが原因とは考えられないです。(たぶん
ちなみにPython3.4です。

お時間があれば回答よろしくお願いします。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。