OOPの練習
2008/04/14
やっと、やろうとしてたことができた。前にPHPを覚えようとしたときPHPでも同じことをやってみたけど、今回のpythonでは、妙なところで嵌ってしまった。(前のエントリ)デフォルト引数を使わなければスムーズだったと思うんですが。
クラスのインスタンスを使ってHTMLタグの構造を構成して、トップを文字列評価すると全体のHTML文字列が取得できるというOOPの練習。
#! /usr/bin/python# -*- coding: cp932 -*-class Tag(object): name = Nonedef __init__(self, children = None, attrs = None):if children is None: children = []if attrs is None: attrs = {} self.children = children self.attrs = attrsdef __str__(self): childrenExp = ''.join(map(lambda(x): str(x), self.children)) attrsExp = ''for k in self.attrs: attrsExp += '%s="%s"' % (k, self.attrs[k])return ('<%s%s>' + childrenExp + '</%s>') % (self.name, attrsExp, self.name)def addAttr(self, name, value): self.attrs[name] = valuedef addChild(self, child): self.children.append(child)class Html(Tag): name = 'html'class Body(Tag): name = 'body'class H1(Tag): name = 'h1' html = Html() body = Body() h1 = H1(["Hello, Python!"], {"style": "color:red;"}) body.addChild(h1) html.addChild(body)print html
実行結果
<html><body><h1 style="color:red;">Hello, Python!</h1></body></html>
変なところで嵌ってたから、もう一度復習が必要だと思いました。
以前、今より時間的余裕がある頃、「みんなのPython」を一通り読んだんですが、もう忘れてます。。。
やっぱり、書かなきゃダメですね。
最近はロクにPGをやってないので、ヤバいです。。
確かに手を動かさないと理解できないかも。1日30分とかできるとチリも積もるんだろうけど。
pythonが、自分の肌に合う言語かどうかわからない(合いそうとも思えなかった)けど、食わず嫌いのままでは判断もできないから、ちょっと触ってみてる。
今のところの印象では、良い言語なのかもしれないけど、楽しい言語ではないかな。