# 结构性模式-装饰模式 from abc import ABCMeta, abstractmethod class IPeople(metaclass=ABCMeta): @abstractmethod def show(self): pass class XiaoMing(IPeople): name = "" def __init__(self, name): self.name = name def show(self): print("我是小明") class IFinery(IPeople): _target:IPeople = None def decorate(self, target:IPeople): self._target = target class TShirt(IFinery): def show(self): self._target.show() print("%s穿上T血衫") class Short(IFinery): def show(self): self._target.show() print("%s穿上短裤") if __name__ == "__main__": a = XiaoMing("小明") b = Short() c = TShirt() b.decorate(a) c.decorate(b) c.show()