class IWeaponBahavior(object):
def use_weapon(self):
raise NotImplementedError
class SwordBahavior(IWeaponBahavior):
def use_weapon(self):
return "Sword"
class KnigfeBahavior(IWeaponBahavior):
def use_weapon(self):
return "Knigfe"
class Character(object):
def set_weapon(self, WeaponBahavior):
if isinstance(WeaponBahavior,type(IWeaponBahavior())):
self._WeaponBahavior = WeaponBahavior
else:
raise TypeError('Need IWeaponBahavior Type')
def fight(self):
print("Fight with "+self._WeaponBahavior.use_weapon())
class King(Character):
def __init__(self):
self._WeaponBahavior = SwordBahavior()
def main():
Peter = King()
Peter.fight()
Peter.set_weapon(KnigfeBahavior())
Peter.fight()
if __name__ == "__main__":
main()