#面向對象計算器,實現一些基本的操作,加減乘除,以及打印結果
import win32com.client
#1創建語音播放器
class Calculaor:
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 __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 cheng(self,n):
self.__result *= n
return self
@__check_num_zsq
@__create_say_zsq("除以")
def chu(self, n):
self.__result /= n
return self
def clear(self):
self.__result = 0
return self
def show(self):
self.__say(f"計算的結果是{self.__result}")
print(f"計算的結果是{self.__result}")
return self
@property #描述器 把方法當作屬性
def result(self):
return self.__result
c1 = Calculaor(2)
c1.jia(6).jian(4).cheng(5).show().chu(2).show().clear().jia(36).show() #鏈式編程,實例內部返回實例本身
print(c1.result)