class Person: def __init__(self, ln, fn, t): self.lastName=ln self.firstName = fn self.title=t self.introStrategy=BriefIntro() def hi(self): return self.introStrategy.introduce(self) def setIntroStrategy(self, strategy): self.introStrategy=strategy class IntroductionStrategy(object): def introduce(self, person): return "Hi, I am " class BriefIntro(IntroductionStrategy): def introduce(self, person): return super(BriefIntro, self).introduce(person)+person.firstName class TypicalIntro(IntroductionStrategy): def introduce(self, person): return super(TypicalIntro, self).introduce(person)+person.title+" "+person.firstName+" "+person.lastName arnold=Person("Rosenbloom", "Arnold", "Lecturer") sid=Person("Smith", "Sid", "Dr.") print arnold.hi() print sid.hi() arnold.setIntroStrategy(TypicalIntro()) print arnold.hi() print sid.hi() sid.setIntroStrategy(TypicalIntro()) print arnold.hi() print sid.hi()