实现特点:
1、链式编程。
2、重构简化代码(使用python的装饰器、描述器)。
3、描述器的功能:将类方法变成类属性。
代码如下:
#encoding:utf-8 import win32com.client class Caculator: def __check_num_zsq(func): def inner(self,n): if not isinstance(n, int): raise TypeError("当前这个数据的类型有问题,请输入一个整型数据") return func(self,n) return inner def __say(self,word): speaker = win32com.client.Dispatch("SAPI.SpVoice") speaker.Speak(word) def __creat_say_zsq(word=''): def __say_zsq(func): def inner(self,n): self.__say(word+str(n)) return func(self,n) return inner return __say_zsq @__check_num_zsq @__creat_say_zsq() def __init__(self,num): self.__result=num @__check_num_zsq @__creat_say_zsq('加') def jia(self,n): self.__result+=n return self @__check_num_zsq @__creat_say_zsq('减去') def jian(self,n): self.__result-=n return self @__check_num_zsq @__creat_say_zsq('乘以') def cheng(self,n): self.__result*=n return self def show(self): self.__say("计算的结果是:%d" % self.__result) print("计算的结果是:%d" % self.__result) return self def clear(self): self.__result=0 return self @property#使用描述器,将类方法变成类属性 def result(self): return self.__result c1=Caculator(2) c1.jia(6).jian(4).cheng(5).show().clear().jia(555).jian(500).show() print(c1.result)