プログラミング始めたばっかの初心者です。
以下のコードでわからない点がありました。
class Deck(list): def __init__(self): list.__init__(self) def make_card(self, name, power): return {name:power} def add_card(self, name, power): self.append(self.make_card(name, power) ) def print_deck(self): print "all card num:", len(self) for card in self: print card if __name__ == "__main__": t = Deck() for i in xrange(1, 10): t.add_card("card no."+str(i), i * 4 + 10) t.print_deck()
疑問点は3つです。公式ドキュメントを見てみたりしたのですが難しくてあまり理解できませんでした。初心者にもわかるように教えてもらえないでしょうか。よろしくお願いします。
1、継承元がlistだと思うのですが、具体的に定義されてないですし、print listなどとしても表示されないですし、これはなんなのでしょうか?変数ではないんですか?
2、selfってクラス関数の第一引数だからインスタンスを代入されたtの事だと思うのですが、7、10行目を見るとどうやらリストになっているみたいでよくわかりません。インスタンスの定義もそもそもよくわかっていないです。
3、上記のコードの7、9、10行目のselfをlistに置き換えても失敗するのはどうしてでしょう?下記のコードではうまくいっていますが違いがわかりません。また逆に下記のコードでlistをselfに置き換えてもうまくいきません。
# -*- coding: utf-8 -*- class TestExtends(list): def __init__(self): list.__init__(self) def append(self,value): list.append(self,value) print u"値が追加されました:" + str(value) if __name__ == "__main__": test = TestExtends() test.append("python") test.append("-") test.append("izm") print "===============" for i in test: print i
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/02 10:21
2016/01/02 14:25
2016/01/03 04:18
2016/01/03 06:54
2016/01/03 09:00