第一步关于导入模块的事, 我试了好几个方法才发现在好像 win7 系统没有语音识别功能, 我用了 win10 的又需要重新下载一个包
这样子, win32com.client 模块就可以使用了
- import win32com.client
- # # 1. 创建一个播报器对象
- # speaker = win32com.client.Dispatch("SAPI.SpVoice")
- # # 2. 通过这个播报器对象, 直接, 播放相对应的语音字符串就可以
- # speaker.Speak("我的名字是: 王云龙")
- 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):
- # 1. 创建一个播报器对象
- speaker = win32com.client.Dispatch("SAPI.SpVoice")
- # 2. 通过这个播报器对象, 直接, 播放相对应的语音字符串就可以
- speaker.Speak(word)
- def __create_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
- @__create_say_zsq()
- def __init__(self,num):
- self.__result = num
- @__check_num_zsq
- @__create_say_zsq("加")
- def jia(self,n):
- self.__result += n
- return self
- @__check_num_zsq
- @__create_say_zsq("减去")
- def jian(self,n):
- self.__result -= n
- return self
- @__check_num_zsq
- @__create_say_zsq("乘以")
- def chen(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(10)
- # 链式编程的思路用 return self 本身就可以做到
- c1.jia(6).jian(4).chen(5).show().clear().jia(555).jian(500).show()
- c1.result
来源: http://www.bubuko.com/infodetail-2562852.html