TempleteMethod

Pythonデザインパターンを適用してみました。
 
まず、テンプレートとなる基底クラス。
「monster.py」

class Monster:
    power = 0
    hp = 0
    name = "dummy"
    def attack(self):
        print self.name, "の攻撃"
        return self.power
    def damage(self, param):
        print self.name, "は", param, "のダメージを受けた"
        self.hp -= param
        return self.isDead()
    def isDead(self):
        if(self.hp < 1):
            print self.name, "は死んでしまった"
            return True
        return False
    def escape(self):
        print self.name, "は逃げ出した"

これを継承したスライムクラス。
「slime.py」

from monster import Monster

class Slime(Monster):
    power = 2
    hp = 5
    name = "スライム"

もう一つ継承したのがスライムベスクラス。
「slimebesu.py」

from monster import Monster

class Slimebesu(Monster):
    name = "スライムベス"
    hp = 10
    power = 3

最後にモンスターを動かすドライバ。

from slime import Slime
from slimebesu import Slimebesu

enemy1 = Slime()
enemy2 = Slimebesu()

while True:
    if(enemy2.damage(enemy1.attack())):
        break
    if(enemy1.damage(enemy2.attack())):
        break

…と、書いた後にこれはTempleteMethodでないことに気がつきました…。
抽象メソッドがないですし…。